various fixes and improvements
[automated-distro-installer] / fai-revm
index 6f8beeb6c326f521872634fce90e3ecaa072745a..2dbae8fafe89c77c68746233f5d1a32f04c11741 100755 (executable)
--- a/fai-revm
+++ b/fai-revm
 
 
 
-cleanup() { :; }
-set -eE -o pipefail
-trap 'cleanup; echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
-script_dir=$(dirname $(readlink -f "$BASH_SOURCE"))
+x="$(readlink -f "$BASH_SOURCE")"
+script_dir="${x%/*}"
+source "${script_dir}/bash-trace"
 
 e() { echo "$*"; "$@"; }
 
@@ -34,8 +33,10 @@ then start a virtual machine to test the config
 Note, sometimes shutting down the existing demohost vm
 fails. Just run again if that happens.
 
+-d         Don't do dhcp setup for when we aren't on Ian's home network.
 -r         Do not boot after install is complete
--n         Create new qcow2(s) for vm
+-n         Create new qcow2(s) for vm. Good for testing partitioning
+           script, to ensure a blank disk.
 -h|--help  Print help and exit.
 
 Note: Uses GNU getopt options parsing style
@@ -43,12 +44,13 @@ EOF
     exit $1
 }
 
-
+orig_args=("$@")
 new_disk=false
-temp=$(getopt -l help hnr "$@") || usage 1
+temp=$(getopt -l help dnrh "$@") || usage 1
 eval set -- "$temp"
 while true; do
     case $1 in
+        -d) dhcp_arg=-d; shift ;;
         -n) new_disk=true; shift ;;
         -r) reboot_arg=--noreboot; shift ;;
         -h|--help) usage ;;
@@ -67,9 +69,8 @@ if [[ $script_dir == /a/bin/* ]]; then
     # Copy our script elsewhere so we can develop it
     # and save it at the same time it's running
     rm -rf /tmp/faifreeze
-    mkdir -p /a/tmp
     cp -ar /a/bin/fai /tmp/faifreeze
-    exec /tmp/faifreeze/${BASH_SOURCE##*/} "$@"
+    exec /tmp/faifreeze/${BASH_SOURCE##*/} "${orig_args[@]}"
 fi
 
 cd $script_dir
@@ -78,14 +79,20 @@ is_arch_revm() {
     [[ ${0##*/} == arch-revm ]]
 }
 
-cleanup() { ./pxe-server; }
+cleanup() {
+    echo "doing cleanup"
+    e ./pxe-server $dhcp_arg
+    ./faiserver-disable
+}
+_errcatch_cleanup=cleanup
+
 if is_arch_revm; then
-    ./pxe-server demohost arch
+    e ./pxe-server $dhcp_arg demohost arch
     sleep 2
     # via osinfo-query os. guessing arch is closest to latest fedora.
     variant=fedora22
 else
-    ./pxe-server demohost fai
+    e ./pxe-server $dhcp_arg demohost fai
     sleep 2
     # I don't think these variants actually make a diff for us, but I
     # use the appropriate one when trying a new distro just in case.
@@ -105,7 +112,7 @@ for ((i=1; i <= disk_count; i++)); do
     disk_arg+=("--disk path=$f")
     if $new_disk || [[ ! -e $f ]]; then
         s rm -f $f
-        e s qemu-img create -o preallocation=metadata -f qcow2 $f 20G
+        e s qemu-img create -o preallocation=metadata -f qcow2 $f 50G
     fi
 done
 
@@ -127,11 +134,10 @@ if [[ $SSH_CLIENT ]]; then
 fi
 
 sleep 30
-while ! timeout -s 9 10 ssh root@$name /bin/true; do
+while ! timeout -s 9 10 ssh -oBatchMode=yes root@$name /bin/true; do
     e sleep 5
-    khfix root@$name ||:
 done
-cleanup() { :; }
+unset _errcatch_cleanup
 e pxe-server
 if is_arch_revm; then
     ./arch-init-remote $name