blob: f75c895de297024390a45f79c8a5a0ef075a4970 (
plain) (
tree)
|
|
# Copyright (c) 2008..2010 - RZ Uni Freiburg
# Copyright (c) 2008..2010 - OpenSLX GmbH
#
# This program/file 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 feedback to feedback@openslx.org
#
# General information about OpenSLX can be found at http://openslx.org
#
# script is included from init via the "." load function - thus it has all
# variables and functions available
# include default directories
. /etc/openslx.conf
CONFFILE="/initramfs/plugin-conf/vmgrid.conf"
PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/vmgrid
VIRTUALIZATIONPLUGIN=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization
#RWSHARE=/mnt/${OPENSLX_DEFAULT_VARDIR}/plugins/vmgrid/share
RWSHARE=/mnt/var/opt/openslx/plugins/vmgrid/share
RWSHAREMNT=/mnt/var/opt/openslx/mnt/vmgrid
BINDIR=/mnt/${OPENSLX_DEFAULT_BINDIR}
PLUGINDIR=${OPENSLX_DEFAULT_DIR}/plugin-repo/vmgrid
VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}/vmgrid
if [ -f $CONFFILE ]; then
# load needed variables
. $CONFFILE
if [ ${vmgrid_active} -ne 0 ] ; then
[ ${DEBUGLEVEL} -gt 0 ] && echo "executing the 'vmgrid' os-plugin ..."
# load general configuration
. /etc/initramfs-setup
# include functions
. /etc/functions
testmkd ${PLUGINCONFDIR}
testmkd ${VIRTDIR}
cp $CONFFILE ${PLUGINCONFDIR}/vmgrid.conf
# create link to binpath
ln -fs ${PLUGINDIR}/vmgrid ${BINDIR}/vmgrid
ln -fs ${PLUGINDIR}/run-vmgrid.sh ${BINDIR}/run-vmgrid.sh
# mount nfs virt ro share
if strinstr "nfs://" "${vmgrid_roshare}"; then
virtsrcprot=$(uri_token ${vmgrid_roshare} prot)
virtsrcserv=$(uri_token ${vmgrid_roshare} server)
virtsrcpath="$(uri_token ${vmgrid_roshare} path)"
if [ -n "${virtsrcprot}" -a -n "${virtsrcserv}" -a -n "${virtsrcpath}" ];
then
virtsrctarget=${VIRTDIR}
# mount the vmgrid source ro
fsmount ${virtsrcprot} ${virtsrcserv} ${virtsrcpath} ${virtsrctarget} \
ro
fi
fi
# create rw share
testmkd ${RWSHARE}
# bind mount id 45 to ${RWSHARE}
if strinstr "id45" "${vmgrid_rwshare}" ; then
id45part=$(grep " 45 " /etc/disk.partition | awk '{print $1}' | \
cut -f 3,3 -d /)
if [ -n "${id45part}" ]; then
testmkd /mnt/media/${id45part}/vmgrid
mount --bind -n /mnt/media/${id45part}/vmgrid ${RWSHARE} \
>>/tmp/vmgrid.log 2>&1
fi
# mount nfs rw share
elif strinstr "nfs://" "${vmgrid_rwshare}" ; then
rwshareprot=$(uri_token ${vmgrid_rwshare} prot)
rwshareserv=$(uri_token ${vmgrid_rwshare} server)
rwsharepath="$(uri_token ${vmgrid_rwshare} path)"
if [ -n "${rwshareprot}" -a -n "${rwshareserv}" -a -n "${rwsharepath}" ];
then
# mount to a dir fist to create spec host dir, then bind mount
testmkd ${RWSHAREMNT}
rwtarget=${RWSHAREMNT}
# mount the vmgrid source rw
fsmount ${rwshareprot} ${rwshareserv} ${rwsharepath} ${rwtarget} rw
# hostname?
host_name=${host_name:=$clientip}
testmkd ${RWSHAREMNT}/${host_name}
mount --bind ${RWSHAREMNT}/${host_name} ${RWSHARE} \
>>/tmp/vmgrid.log 2>&1
fi
else
testmkd /mnt/tmp/vmgrid
mount --bind -n /mnt/tmp/vmgrid ${RWSHARE} >>/tmp/vmgrid.log 2>&1
fi
# chmod so that everybody can write
chmod 1777 ${RWSHARE}
echo "vmgrid_rwmnt=${RWSHARE#/mnt}" >> ${PLUGINCONFDIR}/vmgrid.conf
# finished ...
[ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmgrid' os-plugin ..."
fi
else
[ $DEBUGLEVEL -gt 0 ] && echo " * configuration of 'vmgrid' os-plugin failed"
fi
|