X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=xen%2Freadconfig.in;h=97e34ff249283964531f87d852da38173df447c4;hb=HEAD;hp=15c58b98457c935b0563985b44ec39c3b26e25ba;hpb=18dca52feac6a59c110c6abb25f091e8aa801bd6;p=autopkgtest.git diff --git a/xen/readconfig.in b/xen/readconfig.in index 15c58b9..97e34ff 100644 --- a/xen/readconfig.in +++ b/xen/readconfig.in @@ -12,6 +12,7 @@ fail () { } x () { echo "x $*"; "$@"; } +xl () { echo "x $*"; 3>&- 4>&- "$@"; } case "$BASH_VERSION" in '') fail 'scripts using adtxenlvm readconfig must be bash scripts' ;; @@ -20,31 +21,33 @@ esac #---------- default values for simple settings ---------- -adt_nominum=adt -adt_testbed_ram=256 -adt_freeze_ram=32 -adt_fs_size=3072M -adt_fs_snapsize=2560M -adt_fs_cowchunk=8 -adt_playbase=/var/lib/autopkgtest/xenlvm -adt_fs_type=ext3 -adt_fs_mkfs_args='' -adt_vm_reduce_retries=10 -adt_ssh_keytype=dsa - -adt_debootstrap_components='*' -adt_debootstrap_include=libc6-xen,openssh-server,ed -adt_debootstrap_includemore= -adt_debootstrap_mirrors='' -adt_debootstrap_script='' - -adt_fw_localmirrors='' -adt_fw_prohibnets='192.168.0.0/24 172.16.0.0/12 10.0.0.0/8' -adt_fw_allowglobalports='80' - -adt_guest_macaddr=00:16:3e:7c:aa:7f -adt_net_vifscript=/etc/xen/scripts/vif-route-adt -adt_normaluser=adtxenu +: ${adt_nominum:=adt} +: ${adt_testbed_ram:=256} +: ${adt_freeze_ram:=32} +: ${adt_fs_size:=6144M} +: ${adt_fs_snapsize:=5120M} +: ${adt_fs_cowchunk:=8} +: ${adt_swap_size:=5120M} +: ${adt_playbase:=/var/lib/autopkgtest/xenlvm} +: ${adt_fs_type:=ext3} +: ${adt_fs_mkfs_args:=} +: ${adt_vm_reduce_retries:=10} +: ${adt_ssh_keytype:=dsa} + +: ${adt_debootstrap_opts:=} +: ${adt_debootstrap_components:='*'} +: ${adt_debootstrap_include:=openssh-server,ed} +: ${adt_debootstrap_includemore:=} +: ${adt_debootstrap_mirrors:=} +: ${adt_debootstrap_script:=} + +: ${adt_fw_localmirrors:=} +: ${adt_fw_prohibnets:=192.168.0.0/24 172.16.0.0/12 10.0.0.0/8} +: ${adt_fw_allowglobalports:=80} + +: ${adt_guest_macaddr:=00:16:3e:7c:aa:7f} +: ${adt_net_vifscript:=/etc/xen/scripts/vif-route-adt} +: ${adt_normaluser:=adtxenu} #---------- arguments and config file ---------- @@ -67,7 +70,7 @@ cmdline_args () { *) fail "unknown configuration variable \`$var'" ;; esac - eval "$var=\"\$value\"" + eval "adt_$var=\"\$value\"; export adt_$var" shift ;; --) shift; break ;; @@ -83,16 +86,46 @@ cmdline_args "$@" test ! -e "${adt_config}" || . "${adt_config}" cmdline_args "$@" +#---------- settings needed for locking ---------- + +if [ ! "${adt_readconfig_initscript}" ]; then + case "$adt_distro" in + '') + printf "considering which distro to use ... " + test -e /etc/lsb-release || \ + fail 'no /etc/lsb-version, config must specify adt_distro' + . /etc/lsb-release + adt_distro=$DISTRIB_CODENAME + echo "using same distro as host: $adt_distro" + ;; + esac +fi + +# In-host-file-system playground +: ${adt_play:=${adt_playbase}/${adt_nominum}_${adt_distro}} +: ${adt_xmconfig:=${adt_play}/xmconfig} +: ${adt_lock:=${adt_play}.lock} + +if [ "${adt_readconfig_needlock}" ] && + [ "x${adt_lock}" != xnone ] && \ + [ "x${ADT_LOCKED}" != "x$adt_lock" ]; then + if [ "${adt_whenlock_replumb81}" ]; then + exec >&8 8>&- + fi + ADT_LOCKED="$adt_lock" exec with-lock-ex -w "$adt_lock" "$0" "$@" +fi + #---------- calculated defaults for complex settings ---------- -case "$adt_lvm_vg" in -'') +if [ ! "${adt_readconfig_initscript}" ]; then + case "$adt_lvm_vg" in + '') printf "searching for default volume group ... " - vgdisplay_out=`vgdisplay -c 10>&-` + vgdisplay_out=`vgdisplay -c 3>&- 8>&-` case "$vgdisplay_out" in "") fail 'no volume groups found';; *" -"*) fail 'several volume groups, config must specify which';; + "*) fail 'several volume groups, config must specify which';; esac adt_lvm_vg=${vgdisplay_out%%:*} case "$adt_lvm_vg" in @@ -101,45 +134,62 @@ case "$adt_lvm_vg" in adt_lvm_vg=${adt_lvm_vg##* } echo "using system's only volume group: $adt_lvm_vg" ;; -esac + esac +fi -case "$adt_kernel" in -'') +if [ "$adt_readconfig_needkernel" ]; then + case "$adt_kernel" in + '') printf "searching for kernel ... " - for f in /boot/xen*"`uname -r`"; do + for f in /boot/*"`uname -r`"*; do test -e "$f" || continue + printf "(%s:" "$f" + output="$(file -- "$f")" + case "$output" in + *"gzip compressed data"*) ;; + *) printf "!gzip) "; continue ;; + esac + trap 'rm -f -- "$tf"; exit 127' 0 + tf=`mktemp -t` + zcat -- "$f" >"$tf" + output="$(file -- "$tf")" + case "$output" in + *"ELF "*" executable,"*) ;; + *) printf "!ELF) "; continue;; + esac + output="$(objdump -j __xen_guest -s -- "$tf")" + rm -f "$tf"; trap '' 0 + case "$output" in + *" __xen_guest:"*) ;; + *) printf "!Xen) "; continue + esac + printf "y) " test "x$adt_kernel" = x || \ fail 'several kernels, config must specify which' adt_kernel="$f" done + [ "x$adt_kernel" != x ] || \ + fail 'could not find currently booted Xen kernel' echo "using currently booted kernel: $adt_kernel" ;; -esac + esac -case "$adt_ramdisk" in -none) echo "ramdisk \`none' specified, using static kernel" + case "$adt_ramdisk" in + none) echo "ramdisk \`none' specified, using static kernel" adt_ramdisk='' ;; -'') adt_ramdisk="$adt_kernel.initrd.img" - echo "using default ramdisk .initrd.img: $adt_ramdisk" ;; -*) ;; -esac + '') adt_ramdisk="${adt_kernel/\/vmlinuz-//initrd.img-}" + test -e "$adt_ramdisk" || \ + fail "calculated default ramdisk initrd.img \`$adt_ramdisk' does not exist" + echo "using calculated default ramdisk initrd.img: $adt_ramdisk" ;; + *) ;; + esac +fi case "$adt_modules" in '') adt_modules="/lib/modules/`uname -r`" ;; *) ;; esac -case "$adt_distro" in -'') - printf "considering which distro to use ... " - test -e /etc/lsb-release || \ - fail 'no /etc/lsb-version, config must specify adt_distro' - . /etc/lsb-release - adt_distro=$DISTRIB_CODENAME - echo "using same distro as host: $adt_distro" - ;; -esac - hostname_from_ipaddr () { eval ' if [ x"$adt_'$1'_hostname" = x ] && \ @@ -151,16 +201,20 @@ hostname_from_ipaddr () { ' } -hostname_from_ipaddr guest hostname_from_ipaddr host +if [ ! "${adt_readconfig_initscript}" ]; then + hostname_from_ipaddr guest +fi + if [ x"$adt_host_hostname" = x ]; then printf "finding host hostname, supposely our own FQDN: " adt_host_hostname=`hostname -f` printf "%s\n" "$adt_host_hostname" fi -if [ x"$adt_guest_hostname" = x ]; then +if [ ! "${adt_readconfig_initscript}" ]; then + if [ x"$adt_guest_hostname" = x ]; then case "$adt_guests_domain" in '') printf "guessing guest hostname from host hostname: " adt_guest_hostname=$adt_distro.$adt_nominum.${adt_host_hostname#*.} ;; @@ -170,6 +224,7 @@ if [ x"$adt_guest_hostname" = x ]; then adt_guest_hostname=$adt_distro.$adt_guests_domain ;; esac printf "%s\n" "$adt_guest_hostname" + fi fi ipaddr_from_hostname () { @@ -183,8 +238,10 @@ ipaddr_from_hostname () { ' } -ipaddr_from_hostname guest ipaddr_from_hostname host +if [ ! "${adt_readconfig_initscript}" ]; then + ipaddr_from_hostname guest +fi search_hook () { eval ' @@ -221,6 +278,7 @@ search_hook () { search_hook fw firewall fwhook search_hook setup setup setuphook +search_hook sshauthkeys "ssh auth keys" sshauthkeys boolean_config () { eval ' @@ -242,13 +300,9 @@ boolean_config () { # Xen : ${adt_xmname:=${adt_nominum}_${adt_distro}} -# In-host-file-system playground -: ${adt_play:=${adt_playbase}/${adt_nominum}_${adt_distro}} -: ${adt_xmconfig:=${adt_play}/xmconfig} -: ${adt_lock:=${adt_play}/lock} - # LVM boolean_config lvm_erasebase true + : ${adt_lvm_baselv:=${adt_nominum}_${adt_distro}_base} : ${adt_lvm_cowdatalv:=${adt_nominum}_${adt_distro}_cowdata} : ${adt_devmapper_cowdev:=${adt_nominum}_${adt_distro}_snap} @@ -256,19 +310,42 @@ boolean_config lvm_erasebase true : ${adt_fslink_dir:=adt-xenlvm} : ${adt_fslink_name:=${adt_nominum}_${adt_distro}_fs} +# LVM - swap +: ${adt_lvm_eraseswap:=$adt_lvm_erasebase} + +: ${adt_lvm_swapbaselv:=${adt_nominum}_${adt_distro}_swapbase} +: ${adt_lvm_swapcowdatalv:=${adt_nominum}_${adt_distro}_swapcowdata} +: ${adt_devmapper_swapcowdev:=${adt_nominum}_${adt_distro}_swapsnap} + +: ${adt_swaplink_dir:=adt-xenlvm} +: ${adt_swaplink_name:=${adt_nominum}_${adt_distro}_swap} + +: ${adt_lvm_swapvg:=$adt_lvm_vg} + +: ${adt_swap_snapsize:=$adt_swap_size} +: ${adt_swap_cowchunk:=$adt_fs_cowchunk} + +case "$adt_swap_size" in +*[!0A-Za-z]*) provide_swap=true ;; +*) provide_swap=false ;; +esac + # Firewall : ${adt_fw_testbedclients:=${adt_host_ipaddr}} -lvm_baselv_namerhs=${adt_lvm_vg}/${adt_lvm_baselv} -lvm_baselv_namepath=/dev/${lvm_baselv_namerhs} +for fs in fs swap; do swap=${fs#fs}; eval " + lvm_baselv_${swap}namerhs=\${adt_lvm_${swap}vg}/\${adt_lvm_${swap}baselv} + lvm_baselv_${swap}namepath=/dev/\${lvm_baselv_${swap}namerhs} -lvm_cowdata_namerhs=${adt_lvm_vg}/${adt_lvm_cowdatalv} -lvm_cowdata_namepath=/dev/${lvm_cowdata_namerhs} + lvm_cowdata_${swap}namerhs=\${adt_lvm_${swap}vg}/\${adt_lvm_${swap}cowdatalv} + lvm_cowdata_${swap}namepath=/dev/\${lvm_cowdata_${swap}namerhs} -lvm_snapdev=/dev/mapper/${adt_devmapper_cowdev} + lvm_${swap}snapdev=/dev/mapper/\${adt_devmapper_${swap}cowdev} -lvm_fslink_ptrrhs=${adt_fslink_dir}/${adt_fslink_name} -lvm_fslink_dirpath=/dev/${adt_fslink_dir} -lvm_fslink_ptr=/dev/${adt_fslink_dir}/${adt_fslink_name} + lvm_${fs}link_ptrrhs=\${adt_${fs}link_dir}/\${adt_${fs}link_name} + lvm_${fs}link_dirpath=/dev/\${adt_${fs}link_dir} + lvm_${fs}link_ptr=/dev/\${adt_${fs}link_dir}/\${adt_${fs}link_name} + " +done echo "adtxenlvm: configuration for read for nominum=${adt_nominum}"