File install-xen-virtual_machine.sh of Package xenpaging-scripts

#!/bin/bash
set -ex
unset LANG
unset ${!LC_*}
opt=$1
#
instance=
#
virtmode=
vm_dist=
vm_sp=
#
mac_base=
mac_vm=
mac_dist=
mac_sp=
mac_vm_mode=
#
bridge=
vm_name=
install=
do_autoyast="yes"
autoyast_cmdline=
autoyast_url=
autoyast_xml=
opt_virtmode=
opt_ostype=
opt_install=()
opt_os_settings=()
opt_extra_args=()
#
##
#
if test "${opt}" = "-a"
then
	do_autoyast="yes"
	shift
	opt=$1
elif test "${opt}" = "-A"
then
	do_autoyast="no"
	shift
	opt=$1
fi
shift
instance=${opt##*_}
case "${instance}" in
	0|1|2|3|4|5|6|7|8|9) ;;
	a|b|c|d|e|f) ;;
	*) opt=broken ;;
esac
#
case "${opt}" in
	sles10sp3_para_*)
		virtmode=para
		vm_dist=sles10
		vm_sp=sp3
	;;
	sles10sp3_full_*)
		virtmode=full
		vm_dist=sles10
		vm_sp=sp3
	;;
	sles10sp4_para_*)
		virtmode=para
		vm_dist=sles10
		vm_sp=sp4
	;;
	sles10sp4_full_*)
		virtmode=full
		vm_dist=sles10
		vm_sp=sp4
	;;
	sles11ga_para_*)
		virtmode=para
		vm_dist=sles11
		vm_sp=ga
	;;
	sles11ga_full_*)
		virtmode=full
		vm_dist=sles11
		vm_sp=ga
	;;
	sles11sp1_para_*)
		virtmode=para
		vm_dist=sles11
		vm_sp=sp1
	;;
	sles11sp1_full_*)
		virtmode=full
		vm_dist=sles11
		vm_sp=sp1
	;;
	*)
	echo "$0 $* not recognized"
	echo "Usage: $0 [-a] sles11ga_para_N|sles11ga_full_N"
	echo "       $0 [-a] sles11sp1_para_N|sles11sp1_full_N"
	exit 1
	;;
esac
# MAC
case "${vm_dist}" in
	sles10) mac_dist=a ;;
	sles11) mac_dist=b ;;
	*) exit 1 ;;
esac
case "${vm_sp}" in
	ga)  mac_sp=0 ;;
	sp1) mac_sp=1 ;;
	sp2) mac_sp=2 ;;
	sp3) mac_sp=3 ;;
	sp4) mac_sp=4 ;;
	*) exit 1 ;;
esac
case "${virtmode}" in
	para) mac_vm_mode=0 ;;
	full) mac_vm_mode=1 ;;
	*) exit 1 ;;
esac
mac_instance=${instance}
mac_vm=${mac_dist}${mac_sp}:${mac_vm_mode}${mac_instance}
#
# dist
if test -e /mounts/schnell
then
	autoyast_url="http://bax.arch.suse.de/~ohering/work/xen"
	case "${vm_dist}" in
		sles10)
			case "${vm_sp}" in
				sp2)
				install=http://schnell.suse.de/SLES10/SLE-10-SP2/SLES-10-SP2-GM/x86_64/DVD1
				;;
				sp3)
				install=http://schnell.suse.de/SLES10/SLE-10-SP3/SLES-10-SP3-GM/x86_64/DVD1
				;;
				sp4)
				install=http://schnell.suse.de/SLES10/SLE-10-SP4/SLES-10-SP4-GM/x86_64/DVD1
				autoyast_xml=autoyast-sles10sp4_para.xml
				;;
			esac
		;;
		sles11)
			case "${vm_sp}" in
				ga)
				install=http://schnell.suse.de/SLE11/SLES-11-GM/x86_64/DVD1
				autoyast_xml=autoyast-sles11ga_para.xml
				;;
				sp1)
				install=http://schnell.suse.de/SLE11/SLES-11-SP1-GM/x86_64/DVD1
				autoyast_xml=autoyast-sles11sp1_para.xml
				;;
			esac
		;;
	esac
else
	autoyast_url="http://192.168.2.100/dist/buildservice/home:olh:xen-unstable/xenpaging-scripts"
	case "${vm_dist}" in
		sles10)
			case "${vm_sp}" in
				sp3)
				install=http://192.168.2.100/dist/sles10-sp3/x86_64/dvd1
				;;
				sp4)
				install=http://192.168.2.100/dist/sles10-sp4/x86_64/dvd1
				autoyast_xml=autoyast-sles10sp4_para.xml
				;;
			esac
		;;
		sles11)
			case "${vm_sp}" in
				sp1)
				install=http://192.168.2.100/dist/sles11-sp1/x86_64/dvd1
				autoyast_xml=autoyast-sles11sp1_para.xml
				;;
			esac
		;;
	esac
fi
#
if test "${virtmode}" = "para"
then
	if test "${do_autoyast}" = "yes" && test -n "${autoyast_url}" && test -n "${autoyast_xml}"
	then
		autoyast_cmdline="vnc=1 vncpassword=password ssh=1 sshpassword=root nosshkey"
		opt_os_settings=( "--os-settings" "${autoyast_url}/${autoyast_xml}" )
	else
		autoyast_cmdline="start_shell"
	fi
fi
vm_name=${vm_dist}${vm_sp}_${virtmode}_${instance}
# vm-install
case "${virtmode}" in
	full)
		opt_virtmode=--full-virt
	;;
	para)
		if test -z "${install}"
		then
			echo "'install' is not configured"
			exit 1
		fi
		opt_virtmode=--para-virt
		opt_install=("--source" "${install}" )
		opt_extra_args=( "--extra-args" "quiet sysrq=yes panic=9 oops=panic ${autoyast_cmdline}" )
	;;
esac
case "${vm_dist}" in
	sles10) opt_ostype=sles10 ;;
	sles11) opt_ostype=sles11 ;;
esac
#
isodist=${vm_dist}${vm_sp}
case "$(hostname)" in
	optiplex|anonymi)
	mac_base=00:e1:08:15
	bridge=br0
	;;
	falla)
	mac_base=00:e2:08:15
	bridge=br1
	;;
	stein-schneider)
	mac_base=00:e3:08:15
	bridge=br0
	;;
	bach)
	mac_base=00:e4:08:15
	bridge=br0
	;;
esac
if test -z "${bridge}"
then
	echo "hostname not handled, incomplete pseudo MAC address"
	exit 1
fi
mac=${mac_base}:${mac_vm}
iso=/suse/ohering/public_html/work/xenpaging/bootiso-${isodist}.iso
if ! test -f "${iso}"
then
	iso="${PWD}/bootiso-${isodist}.iso"
fi
if ! test -f "${iso}"
then
	echo "bootiso-${isodist}.iso not found"
fi
cp -avL --remove-destination "${iso}" /var/lib/xen/images/bootiso-${isodist}-${vm_name}.iso
#
vm-install \
 \
--vcpus 2 \
--graphics-viewer vnc \
--graphics cirrus \
--memory 512 \
--max-memory 512 \
--name ${vm_name} \
${opt_virtmode} \
--nic mac=${mac},bridge=${bridge} \
--os-type ${opt_ostype} \
--disk file:/var/lib/xen/images/vdisk-${vm_name}-disk0,0,disk,w,4096,sparse=1 \
--disk file:/var/lib/xen/images/vdisk-${vm_name}-disk1,1,disk,w,8192,sparse=1 \
--disk file:/var/lib/xen/images/bootiso-${isodist}-${vm_name}.iso,2,cdrom,r \
--debug \
--preserve-on-error \
--background \
--ui text \
"${opt_install[@]}" \
"${opt_os_settings[@]}" \
"${opt_extra_args[@]}" \
"$@"
exit $?
openSUSE Build Service is sponsored by