chiark / gitweb /
* adt-xenlvm-with-testbed: sleep 1 after xm destroy, which is racy.
[autopkgtest.git] / xen / setup
index b3c9b697decb433383b01128627e8f801cf5885d..262f5eaa406d60271ec9159596083cb2dd63a712 100755 (executable)
--- a/xen/setup
+++ b/xen/setup
 #!/bin/bash
 set -e
-. ./config
-./cleanup
-lvchange -a n $lvcowdata ||:
-lvremove $lvbase ||:
-lvremove $lvcowdata ||:
+adt_readconfig_needkernel=y
+adt_readconfig_needlock=y
+. ${ADT_XENLVM_SHARE:=/usr/share/autopkgtest/xenlvm}/readconfig
+test $nonoptargs = 0 || fail "non-option arguments not allowed"
 
-lvcreate -L $fssize -n $lvbase $vg
-lvcreate -L $snapsize -n $ncowdata $vg
-#dd if=/dev/zero of=$lvbase
-mkfs -t ext3 $lvbase
+$ADT_XENLVM_SHARE/purge "$@"
 
-mkdir -p $play/base
-mount $lvbase $play/base
+#----- create fs base
 
-#--basetgz $play/base.tgz --buildplace
+lvm_create_base () {
+       xl lvcreate -L $3 -n $2 $1 $4
+       xl lvcreate -L $6 -n $5 $1 $7
+  if $8; then
+    basesize=`lvdisplay -c $9 8>&- 3>&-`
+    basesize="${basesize#*:*:*:*:*:*:}"
+    basesize="${basesize%%:*}"
+    x dd if=/dev/zero of=$9 bs=512 count="$basesize"
+  fi
+}      
 
-pbuilder create --configfile ./pbuilderrc --distribution $distro       \
-       --no-targz --buildplace $play/base                              \
-       $pbuilderopts   --debootstrapopts --variant=''
+lvm_create_base $adt_lvm_vg                                            \
+       $adt_lvm_baselv         $adt_fs_size            $adt_lvm_pv_fsbase \
+       $adt_lvm_cowdatalv      $adt_fs_snapsize        $adt_lvm_pv_fssnap \
+       $adt_lvm_erasebase      $lvm_baselv_namepath    
 
-./fixups $play/base $adt_host_hostname $adt_guest_hostname
+x mkfs -t $adt_fs_type $adt_mkfs_args $lvm_baselv_namepath
+
+#----- create swap base
+
+if $provide_swap; then
+  lvm_create_base $adt_lvm_swapvg                                      \
+       $adt_lvm_swapbaselv     $adt_swap_size          $adt_lvm_pv_swapbase \
+       $adt_lvm_swapcowdatalv  $adt_swap_snapsize      $adt_lvm_pv_swapsnap \
+       $adt_lvm_eraseswap      $lvm_baselv_swapnamepath
+  x mkswap $lvm_baselv_swapnamepath
+  swapdisk=", \"phy:$lvm_swaplink_ptrrhs,hda2,w\""
+fi
+
+#----- create base filesystem and info
+
+mkdir -p $adt_play/base
+x mount $lvm_baselv_namepath $adt_play/base
+
+x debootstrap                                                           \
+       --components="${adt_debootstrap_components}"                     \
+       --include=${adt_debootstrap_include},${adt_debootstrap_includemore} \
+       $adt_debootstrap_opts                                           \
+       "$adt_distro" "$adt_play/base"                                  \
+       "$adt_debootstrap_mirrors" "$adt_debootstrap_script"            \
+ |perl -pe '
+ s/^(I: (?:Retrieving|Validating|Extracting|Unpacking|Configuring) [^A-Z].*)\n/
+  sprintf "%-75s\r", $1
+  /e
+'
+
+$ADT_XENLVM_SHARE/fixups "$@"
 
 echo "
 --- writing $adt_xmconfig ---
 "
 
-adt_host_ipaddr=`adnshost -t a +Do +Dt +Dc $adt_host_hostname`
-
 cat <<END >$adt_xmconfig
-kernel = "$kernel"
-memory = $tbmem
+kernel = "$adt_kernel"
+memory = $adt_testbed_ram
 root = "/dev/hda1"
-extra = "ro console=tty0"
-disk = [ "phy:$lvfsptrrhs,hda1,w" ]
-vif = [ "bridge=none,mac=00:16:3e:7c:aa:7f,ip=$adt_guest_ipaddr,script=/etc/xen/scripts/vif-route-adt" ]
+extra = "ro console=tty0 $adt_xmhook_extra"
+disk = [ "phy:$lvm_fslink_ptrrhs,hda1,w"$swapdisk $adt_xmhook_disk ]
+vif = [ "bridge=none,mac=$adt_guest_macaddr,ip=${adt_guest_ipaddr},script=${adt_net_vifscript}" $adt_xmhook_vif ]
 on_crash = "preserve"
 on_reboot = "preserve"
 on_shutdown = "preserve"
+$adt_xmhook_config
 END
 
-if [ "x$ramdisk" != x ]; then
+if [ "x$adt_ramdisk" != x ]; then
 cat <<END >>$adt_xmconfig
-ramdisk = "$ramdisk"
+ramdisk = "$adt_ramdisk"
 END
 fi
 
-umount $lvbase
+if [ "x$adt_setup_hook" != x ]; then
+       $adt_setup_hook ${adt_play}/base
+fi
+
+x umount $lvm_baselv_namepath
+
+for fs in fs swap; do
+ swap=${fs#fs}; eval "
+  mkdir -p \${lvm_${fs}link_dirpath}
+  ln -sf ../\$lvm_baselv_${swap}namerhs \${lvm_${fs}link_ptr}
+ "
+done
 
-mkdir -p /dev/${pfx}_fs
-ln -sf ../$lvbaserhs $lvfsptr
-xm create $adt_xmconfig name=$xmname
+x xm create $adt_xmconfig name=$adt_xmname
 retries=10
 
+if grep 0 /proc/sys/net/ipv4/ip_forward >/dev/null; then
+       cat <<END
+
+********** WARNING - IP FORWARDING IS TURNED OFF ON THE HOST **********
+Your testbed will probably have trouble with downloads, DNS, etc.
+You must turn this on manually, since it is a major config change.
+
+END
+fi
+
 while true; do
-       if ping -c 1 $adt_guest_ipaddr && ./on-testbed id; then break; fi
+       if ping -c 1 $adt_guest_ipaddr && \
+          /usr/share/autopkgtest/xenlvm/on-testbed "$@" '
+               set -e; umask 002; cd /var/lib;
+               mkdir -p autopkgtest; cd autopkgtest;
+               touch xenlvm-created
+       '; then break; fi
        if [ $retries -le 0 ]; then 
                echo >&2 'no response from guest'
-               xm console $xmname
+               x xm console $adt_xmname
                exit 1
        fi
        retries=$(($retries-1))
        sleep 2
 done
 
-xm mem-set $xmname $frzmem
-retries=10
+x xm mem-set $adt_xmname $adt_freeze_ram
+retries=$adt_vm_reduce_retries
 while sleep 1; do
-  if xm mem-max $xmname $frzmem; then break; fi
+  if x xm mem-max $adt_xmname $adt_freeze_ram; then break; fi
   if [ $retries -le 0 ]; then echo >&2 'cannot reduce memory'; exit 1; fi
   retries=$(($retries-1))
 done
 
-xm save $xmname $play/xen-save
-rm $lvfsptr
+x xm save $adt_xmname $adt_play/xen-save
+rm ${lvm_fslink_ptr} ${lvm_swaplink_ptr}
+touch "$adt_play/good"