summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/vmchooser/files/run-virt.sh
diff options
context:
space:
mode:
authorSebastian Schmelzer2010-09-02 17:50:49 +0200
committerSebastian Schmelzer2010-09-02 17:50:49 +0200
commit416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 (patch)
tree4715f7d742fec50931017f38fe6ff0a89d4ceccc /os-plugins/plugins/vmchooser/files/run-virt.sh
parentFix for the problem reported on the list (sed filter forgotten for the (diff)
downloadcore-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.tar.gz
core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.tar.xz
core-416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5.zip
change dir structure
Diffstat (limited to 'os-plugins/plugins/vmchooser/files/run-virt.sh')
-rw-r--r--os-plugins/plugins/vmchooser/files/run-virt.sh402
1 files changed, 0 insertions, 402 deletions
diff --git a/os-plugins/plugins/vmchooser/files/run-virt.sh b/os-plugins/plugins/vmchooser/files/run-virt.sh
deleted file mode 100644
index 23f026c7..00000000
--- a/os-plugins/plugins/vmchooser/files/run-virt.sh
+++ /dev/null
@@ -1,402 +0,0 @@
-#!/bin/bash
-# -----------------------------------------------------------------------------
-# Copyright (c) 2007..2010 - RZ Uni FR
-# Copyright (c) 2007..2010 - OpenSLX GmbH
-#
-# This program is free software distributed under the GPL version 2.
-# See http://openslx.org/COPYING
-#
-# If you have any feedback please consult http://openslx.org/feedback and
-# send your suggestions, praise, or complaints to feedback@openslx.org
-#
-# General information about OpenSLX can be found at http://openslx.org/
-# -----------------------------------------------------------------------------
-# run-virt.sh
-# - This is the generic wrapper for the several virtualization solutions.
-# The idea is to setup a set of variables used by at least two different
-# tools and then include the specific plugin which configures the speci-
-# fied virtualization tool.
-################################################################################
-
-. /etc/opt/openslx/openslx.conf
-
-################################################################################
-### Define default dirs / get configs
-################################################################################
-
-PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins
-PLUGINCONFDIR=${PLUGINCONFROOT}/vmchooser
-# include general configuration from vmchooser
-[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \
- . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf
-# load general virtualization information
-[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \
- . ${PLUGINCONFROOT}/virtualization/virtualization.conf
-
-################################################################################
-### Functions used throughout the script
-################################################################################
-
-# function to write to stdout and logfile
-LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-virt.${USER}.$$.log
-writelog () {
- # write to stdout
- echo -e "$1"
- # log into file
- echo -e "$1" >> ${LOGFILE}
-}
-
-# remove config dirs when exit
-cleanexit () {
- if echo "${RMDIRS}" 2>/dev/null | grep -q ${xmlvirt}; then
- writelog "${xmlvirt} exited. Cleanning up... \c"
- rm -rf ${RMDIRS} >/dev/null 2>&1
- writelog "done"
- fi
-
- exit "$1"
-}
-
-# Check for important files used
-filecheck ()
-{
- filecheck=$(LANG=us ls -lh ${diskfile} 2>&1)
- writelog "Filecheck:\n${filecheck}\n"
- noimage=$(echo ${filecheck} | grep -i "no such file or directory" | wc -l)
- rightsfile=${diskfile}
-
- # Check if link
- if [ -L "${diskfile}" ]; then
- # take link target
- rightsfile=$(ls -lh ${diskfile} 2>&1 | awk -F '-> *' '{print $2}')
- rightsfile=${vmdir}/${rightsfile}
- filecheck=$(LANG=us ls -lh ${rightsfile} 2>&1)
- fi
-
- # Does file exist
- if [ "${noimage}" -ge "1" ]; then
- writelog "Virtual Machine Image Problem:\c "
- writelog "\tThe image you've specified doesn't exist."
- writelog "Filecheck says:\c "
- writelog "\t\t${diskfile}:\n\t\t\tNo such file or directory"
- writelog "Hint:\c "
- writelog "\t\t\tCompare spelling of the image with your options.\n"
- exit 1
- fi
-
- # Readable by calling user
- if ! [ -r "${diskfile}" >/dev/null 2>&1 \
- -o -r "${diskfile}" >/dev/null 2>&1 ]; then
- writelog "Vmware Image Problem:\c "
- writelog "\tThe image you've specified has wrong rights."
- writelog "Filecheck says:\t\t$(echo ${filecheck} \
- | awk '{print $1" "$3" "$4}') ${rightsfile}"
- writelog "Hint:\t\t\tChange rights with: chmod a+r ${rightsfile}\n"
- exit 1
- fi
-
- # Writable (for persistent-mode)?
- if ! [ -w "${diskfile}" >/dev/null 2>&1 \
- -o -w "${diskfile}" >/dev/null 2>&1 ] \
- && [ "${np}" = "independent-persistent" ]; then
- writelog "Vmware Image Problem:\c "
- writelog "\tThe image you have specified has wrong rights."
- writelog "Filecheck says:\t\t$(echo ${filecheck} \
- | awk '{print $1" "$3" "$4}') ${rightsfile}"
- writelog "Hint:\t\t\tUse nonpersistent-mode or change rights to rw\n"
- exit 1
- fi
-}
-
-################################################################################
-### Get XML file and dir
-################################################################################
-
-# absolute or relative path?
-xmlfile=$1
-if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then
- xmlpath=$(dirname ${xmlfile})
- xmlfile=$(basename ${xmlfile})
-else
- xmlpath=${vmchooser_xmlpath}
-fi
-# full path
-xmlfile="${xmlpath}/${xmlfile%.xml}.xml"
-
-################################################################################
-### Sanity checks
-################################################################################
-
-# test if the xml file is valid
-if ! [ -r "${xmlfile}" ]; then
- writelog "${xmlfile} not a readable XML file!"
- exit 1
-fi
-
-# test if XML file
-if ! grep '<?xml' "${xmlfile}" >/dev/null 2>&1; then
- writelog \
- "Submitted configuration file ${xmlfile} seems to have wrong XML format"
- exit 1
-fi
-
-# Theck for running in graphical environment otherwise no much use here
-[ -z "$DISPLAY" ] && echo -e "\n\tStart only within a graphical desktop!\n" \
- && exit 1
-
-################################################################################
-### Logo for console
-################################################################################
-
-cat <<EOL
- __ __
- .----.--.--.-----.___.--.--.|__|.----.| |_
- | _| | | |___| | || || _|| _|
- |__| |_____|__|__| \___/ |__||__| |____|
- OpenSLX virtual machine environment preparation script ...
-
-EOL
-
-################################################################################
-### Read needed variables from XML file
-################################################################################
-
-writelog "Starting configuration..."
-writelog "\tLogfile:\t\t${LOGFILE}"
-writelog "\t/tmp info:\t\t$(df -h | grep " /tmp$" | awk '{print $2}') \c"
-writelog "$(grep "/tmp " /proc/mounts | awk '{print $1" "$2" "$3" "$4}')"
-writelog "\tVM XML dir:\t\t$(dirname ${xmlfile})"
-writelog "\tXML file:\t\t${xmlfile}"
-writelog "VM config:"
-
-# name of the virt image
-imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \
- | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
-
-# imagename /w full path
-if echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then
- imgpath=$(dirname ${imgname})
- imgname=$(basename ${imgname})
- vmpath=${imgpath}/${imgname}
-# if old vmchooser binary stuff
-# we do not need folder name as it is already included by vmchooser
-elif echo ${xmlfile} 2>/dev/null | grep -q '^/tmp/' >/dev/null 2>&1; then
- vmpath=$imgname
- imgname=$(basename ${imgname})
-# else use same path as xml
-else
- imgpath=${xmlpath}
- vmpath=${imgpath}/${imgname}
-fi
-
-# check if virtual machine container file exists
-if ! [ -e "${vmpath}" ]; then
- writelog "Virtual machine image ${vmpath} not found!"
- exit 1
-fi
-
-# name of the virt machine, sed because of Windows formatting
-vm_name=$(grep -o 'short_description param=.*"' ${xmlfile} \
- | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
-# if ${vm_name} not defined use ${xmlfile}
-vm_name=${vm_name:-${xmlfile%.xml}}
-
-# define vm_shortname since vm_name can be very long
-vm_shortname=$(basename ${xmlfile%.xml} | sed -e "s, ,-,g")
-
-# vm_name = displayname, define for old scripts
-displayname=${vm_name}
-
-# image is for the following virtual machine
-xmlvirt=$(grep -o 'virtualmachine param=.*"' ${xmlfile} \
- | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
-
-# make a guess from the filename extension if ${xmlvirt} is empty
-# (not set within the XML file)
-# TODO: implement possibility to submit own configuration files
-if [ -z "${xmlvirt}" ] && [ -n "${additional_config}" ]; then
- writelog "No virtual machine parameter defined in ${xmlfile}"
- writelog "Trying to guess VM...\c"
- case "$(cat ${additional_config} | tr [A-Z] [a-z])" in
- *config.version*|*virtualhw.version*|*independent-nonpersistent*|*vmdk*)
- xmlvirt="vmware"
- ;;
- *innotek*|*virtualbox*)
- xmlvirt="virtualbox"
- ;;
- *qemu*|*kvm*)
- xmlvirt="qemukvm"
- ;;
- *)
- xmlvirt="none"
- ;;
- esac
-elif [ -z "${xmlvirt}" ]; then
- case "$(echo ${imgname##*.} | tr [A-Z] [a-z])" in
- vmdk)
- xmlvirt="vmware"
- ;;
- vbox)
- xmlvirt="virtualbox"
- ;;
- img|qcow*)
- xmlvirt="qemukvm"
- ;;
- *)
- xmlvirt="none"
- ;;
- esac
- writelog "result:\t${xmlvirt}"
-fi
-
-# definition of the client system
-vmostype=$(grep -io '<os param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }' \
- | tr [A-Z] [a-z])
-
-# definition of the networking the client system is connected to
-network_kind=$(grep -io '<network param=.*"' ${xmlfile} \
- | awk -F '"' '{ print $2 }' | tr [A-Z] [a-z])
-network_card=$(grep -io '<netcard param=.*"' ${xmlfile} \
- | awk -F '"' '{ print $2 }'| tr [A-Z] [a-z])
-
-# set redirects to 0, see vmgrid if you want to define some
-redirects=0
-
-# Serial/parallel ports defined (e.g. "ttyS0" or "autodetect")
-serial=$(grep -io '<serialport param=.*"' ${xmlfile} \
- | awk -F '"' '{ print $2 }')
-parallel=$(grep -io '<parport param=.*"' ${xmlfile} \
- | awk -F '"' '{ print $2 }')
-
-writelog "\tVirtualization:\t\t$xmlvirt"
-writelog "\tVM name:\t\t$vm_name"
-writelog "\tVM short name:\t\t$vm_shortname"
-
-###############################################################################
-### Declaration of default variables
-###############################################################################
-
-# VM-ID static (00)
-VM_ID="00"
-
-# make sure cpu_cores is not empty
-cpu_cores=${cpu_cores:-"1"}
-
-# total amount of memory defined in stage 3
-permem=50
-# get a result which can be divided through 4
-mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4)
-if [ -n "${mainvirtmem}" ]; then
- forcemem=$(expr ${mainvirtmem} / 4 \* 4)
- mem=${forcemem}
-fi
-hostmem=$(expr ${totalmem} - ${mem})
-
-# configuring ethernet mac address: first 3 bytes are fixed (00:50:56)
-# 4th byte is the VM-ID (0D)
-# last two bytes are taken from the bridge of the host
-# define one MAC per guest
-macguestpart="00:50:56:${VM_ID}"
-machostpart=$(echo ${hostmacaddr} | awk -F ":" '{print $(NF-1)":"$NF}')
-macaddr=$(echo "${macguestpart}:${machostpart}" | tr [a-z] [A-Z])
-
-# virtual fd/cd/dvd and drive devices, floppy b: for configuration
-# if $floppy_0 from run-virt.include set then fdtest="TRUE"
-fdtest=
-fdtest=${floppy_0:+"TRUE"}
-# if $fdtest not set floppy0="FALSE", else "TRUE"
-floppy0=${fdtest:-"FALSE"}
-floppy1="TRUE"
-floppy1name="${PLUGINCONFDIR}/loopimg/fd.img"
-# if $cdrom_0 from run-virt.include set then cdtest="TRUE"
-cdtest=
-cdtest=${cdrom_0:+"TRUE"}
-# if $cdtest not set cdrom0="FALSE", else "TRUE"
-cdrom0=${cdtest:-"FALSE"}
-# if $cdrom_1 from run-virt.include set then cdtest="TRUE"
-cdtest=
-cdtest=${cdrom_1:+"TRUE"}
-# if $cdtest not set cdrom1="FALSE", else "TRUE"
-cdrom1=${cdtest:-"FALSE"}
-# ide is expected default, test for the virtual disk image type should
-# be done while creating the runscripts ...
-ide="TRUE"
-scsi="FALSE"
-hddrv="ide"
-audio="true"
-remotedesktopport="590${VM_ID}"
-
-# Display resolution within the host system
-hostres=$(xvidtune -show 2>/dev/null| grep -ve "^$")
-xres=$(echo "${hostres}" | awk '{print $3}')
-yres=$(echo "${hostres}" | awk '{print $7}')
-
-# enable 3D
-enable3d=$(grep -i "<enable3d param=.*" ${xmlfile} 2>/dev/null | \
- awk -F '=' {'print $2'})
-
-# add rw share
-sharepath="${HOME}"
-sharename="home"
-
-# set hostname: using original hostname and adding string
-hostname="virt-$(hostname)"
-
-writelog "\tVM Hostname:\t\t$hostname"
-
-################################################################################
-### Setup the rest of the environment and run the configured vm
-################################################################################
-
-# Adjust sound volume
-writelog "Unmuting sound...\c "
-amixer -q sset Master 80% unmute 2>/dev/null
-amixer -q sset PCM 80% unmute 2>/dev/null
-amixer -q sset CD 80% unmute 2>/dev/null
-amixer -q sset Headphone 80% unmute 2>/dev/null
-amixer -q sset Front 80% umute 2>/dev/null # in SUSE 11.0 it's headphone
-amixer -q sset Speaker 0 mute 2>/dev/null # annoying built-in speaker
-writelog "finished\n"
-
-# Copy guest configuration (with added information) config.xml to be accessed
-# via virtual floppy
-# fixme -> to be changed (vmchooser adapts the file content!?)
-#TODO: wozu echo?
-#echo "Please fix the config.xml generation"
-cp ${xmlfile} ${PLUGINCONFDIR}/fd-loop/config.xml
-
-# Check if virtual machine container file exists
-#filecheck
-
-# Get all virtual machine specific stuff from the respective include file
-if [ -e ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include ] ; then
- self=${xmlvirt}
- . ${PLUGINCONFROOT}/${xmlvirt}/run-virt.include
- # start a windowmanager for easier handling
- # (expect problems /w windows opening in background /w vmware without wm)
- for dm in xfwm4 metacity openbox blackbox kwin fvwm2 ; do
- if which $dm >/dev/null 2>&1 ; then
- if [ "$dm" = "fvwm2" ] ; then
- echo "EdgeScroll 0 0" > ${redodir}/fvwm
- fvwm2 -f ${redodir}/fvwm >/dev/null 2>&1 &
- else
- $dm >/dev/null 2>&1 &
- fi
- break
- fi
- done
- ${VIRTCMD} ${VIRTCMDOPTS}
- writelog "Bye."
- cleanexit 0
-else
- writelog "Failed because of missing ${xmlvirt} plugin."
- cleanexit 1
-fi
-
-# postrun for scripts after virtualization finishes
-if [ -n "${POSTRUN}" ]; then
- eval ${POSTRUN} >/dev/null 2>&1
-fi
-
-cleanexit 0
-exit 0