[Ovirt-devel] create-wui-appliance.sh: useful script!
Jim Meyering
meyering at redhat.com
Fri Apr 4 15:34:50 UTC 2008
Hi Perry,
Thanks for the create-wui-appliance.sh script.
It nicely eliminates several annoyingly manual steps.
Here are some small changes. I've tested the result.
Barring objections I'll push soon.
create-wui-appliance.sh: mostly-minor changes
* wui-appliance/create-wui-appliance.sh: Remove unnecessary
quotes in var=... RHS. Remove unnecessary braces in ${VAR_NAME}/.
Don't redirect function definition. Use 'cat<<EOF' instead of repeated
echo. Add quotes around various $VAR uses, in case they contains shell
meta-characters. Hoist default arch and image dir definitions,
and use them in usage. Use bash's built-in "getopts" function.
Accept "-h" option (for help). Upon usage error, refer to -h,
rather than printing full usage.
diff --git a/wui-appliance/create-wui-appliance.sh b/wui-appliance/create-wui-appliance.sh
index 0167576..4665c59 100755
--- a/wui-appliance/create-wui-appliance.sh
+++ b/wui-appliance/create-wui-appliance.sh
@@ -1,57 +1,60 @@
#!/bin/bash
+ME=$(basename "$0")
+warn() { printf "$ME: $@\n" >&2; }
+try_h() { printf "Try \`$ME -h' for more information.\n" >&2; }
+die() { warn "$@"; try_h; exit 1; }
+
NAME=developer
RAM=512
-IMGNAME=${NAME}.img
+IMGNAME=$NAME.img
IMGSIZE=6
-usage() {
- echo "usage: $0 -i install_iso [-d image_dir] [-a x86_64|i386] [-m MAC]"
- echo " -i: location of installation ISO"
- echo " -d: directory to place virtual disk (default: /var/lib/libvirt/images)"
- echo " -a: architecture for the virtual machine (default: x86_64)"
- echo " -m: specify fixed MAC address for the primary network interface"
- exit 1
-} >&2
-
MAC=
ISO=
-IMGDIR=/var/lib/libvirt/images
-ARCH=x86_64
-for i ; do
- case $1 in
- -i)
- [ $# -lt 2 ] && usage
- ISO="$2"
- shift; shift;;
- -d)
- [ $# -lt 2 ] && usage
- IMGDIR="$2"
- shift; shift;;
- -a)
- [ $# -lt 2 ] && usage
- ARCH="$2"
- shift; shift;;
- -m)
- [ $# -lt 2 ] && usage
- MAC="$2"
- shift; shift;;
- -?|-*)
- usage;;
+IMGDIR_DEFAULT=/var/lib/libvirt/images
+ARCH_DEFAULT=x86_64
+
+ARCH=$ARCH_DEFAULT
+IMGDIR=$IMGDIR_DEFAULT
+
+usage() {
+ case $# in 1) warn "$1"; try_h; exit 1;; esac
+ cat <<EOF
+Usage: $ME -i install_iso [-d image_dir] [-a x86_64|i386] [-m MAC]
+ -i: location of installation ISO (required)
+ -d: directory to place virtual disk (default: $IMGDIR_DEFAULT)
+ -a: architecture for the virtual machine (default: $ARCH_DEFAULT)
+ -m: specify fixed MAC address for the primary network interface
+ -h: display this help and exit
+EOF
+}
+
+err=0 help=0
+while getopts :a:d:i:m:h c; do
+ case $c in
+ i) ISO=$OPTARG;;
+ d) IMGDIR=$OPTARG;;
+ a) ARCH=$OPTARG;;
+ m) MAC=$OPTARG;;
+ h) help=1;;
+ '?') err=1; warn "invalid option: \`-$OPTARG'";;
+ :) err=1; warn "missing argument to \`-$OPTARG' option";;
+ *) err=1; warn "internal error: \`-$OPTARG' not handled";;
esac
done
+test $err = 1 && { try_h; exit 1; }
+test $help = 1 && { usage; exit 0; }
-if [ -z $ISO ]; then
- echo "Please supply the location of the OS ISO" >&2
- usage
-fi
+test -z "$ISO" && usage "no ISO file specified"
+test -r "$ISO" || usage "missing or unreadable ISO file: \`$ISO'"
-if [[ "$ARCH" != "i386" && "$ARCH" != "x86_64" ]]; then
- echo "Please specify a valid architecture" >&2
- usage
-fi
+case $ARCH in
+ i386|x86_64);;
+ *) usage "invalid architecture: \`$ARCH'";;
+esac
-if [ -n $MAC ]; then
+if [ -n "$MAC" ]; then
MAC="-m $MAC"
fi
@@ -59,8 +62,8 @@ mkdir -p $IMGDIR
virsh destroy $NAME > /dev/null 2>&1
virsh undefine $NAME > /dev/null 2>&1
-virt-install -n $NAME -r $RAM -f $IMGDIR/$IMGNAME -s $IMGSIZE --vnc \
- --accelerate -v -c $ISO --os-type=linux --arch=$ARCH \
+virt-install -n $NAME -r $RAM -f "$IMGDIR/$IMGNAME" -s $IMGSIZE --vnc \
+ --accelerate -v -c "$ISO" --os-type=linux --arch=$ARCH \
--noreboot $MAC
./ovirt-mod-xml.sh
virsh start $NAME
diff --git a/wui-appliance/ovirt-mod-xml.sh b/wui-appliance/ovirt-mod-xml.sh
old mode 100755
new mode 100644
--
1.5.5.rc3.1.gaece
More information about the ovirt-devel
mailing list