summaryrefslogtreecommitdiffstats
path: root/os-plugins/plugins/vmgrid
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/vmgrid
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/vmgrid')
-rw-r--r--os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm319
-rw-r--r--os-plugins/plugins/vmgrid/XX_vmgrid.sh104
-rw-r--r--os-plugins/plugins/vmgrid/files/run-vmgrid.sh430
-rw-r--r--os-plugins/plugins/vmgrid/files/vmgrid154
-rw-r--r--os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh144
5 files changed, 0 insertions, 1151 deletions
diff --git a/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm b/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm
deleted file mode 100644
index 0965b482..00000000
--- a/os-plugins/plugins/vmgrid/OpenSLX/OSPlugin/vmgrid.pm
+++ /dev/null
@@ -1,319 +0,0 @@
-# Copyright (c) 2010 - RZ Uni Freiburg
-# Copyright (c) 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
-# -----------------------------------------------------------------------------
-# vmgrid.pm
-# - ...
-# -----------------------------------------------------------------------------
-package OpenSLX::OSPlugin::vmgrid;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSPlugin::Base);
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-use OpenSLX::DistroUtils;
-
-sub new
-{
- my $class = shift;
-
- my $self = {
- name => 'vmgrid',
- };
-
- return bless $self, $class;
-}
-
-# TODO: desc
-sub getInfo
-{
- my $self = shift;
-
- return {
- description => unshiftHereDoc(<<' End-of-Here'),
- ...
- End-of-Here
- precedence => 80,
- #required => [ qr{^(vmware|virtualbox|qemukvm|xen)$} ],
- #openvz|vserver
- # TODO: virtaul plugin (requires, provides?)
- #required => [ qw( virtualization ) ],
- #provided => [ qw( virtualization ) ],
- };
-}
-
-sub getAttrInfo
-{
- my $self = shift;
-
- return {
- 'vmgrid::active' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- should the 'vmgrid'-plugin be executed during boot?
- End-of-Here
- content_regex => qr{^(0|1)$},
- content_descr => '1 means active - 0 means inactive',
- default => '1',
- },
- 'vmgrid::virt' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- which virtualization technique schould be used?
- End-of-Here
- content_regex => qr{^(virtualbox|qemukvm|xen)$},
- #openvz|vserver
- content_descr => 'virtualbox, qemukvm, xen',
- #openvz, vserver
- default => undef,
- },
- 'vmgrid::roshare' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- do you want to mount external resources?
- e.g. NFS share /w virt images ...
- will be mounted to /var/lib/virt/vmgrid
- End-of-Here
- content_regex => qr{^nfs://},
- content_descr => 'NFS share as URI (nfs://...)',
- default => undef,
- },
- 'vmgrid::rwshare' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- do you want a persistent storage device?
- use local hard drive (ID45) or NFS share.
- will be mounted to /var/opt/openslx/plugins/vmgrid/share
- End-of-Here
- content_regex => qr{^(id45|nfs://)},
- content_descr => 'NFS share as URI (nfs://...) or "id45"',
- default => undef,
- },
- 'vmgrid::imgpath' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- location of virtual images
- for starts /w relative path
- End-of-Here
- content_descr => 'absolute path to vm image files',
- default => '/var/lib/virt/vmgrid/images',
- },
- 'vmgrid::xmlpath' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- location of XML configuration for virtual images
- for starts /w relative path
- End-of-Here
- content_descr => 'absolute path to vm xml files',
- default => '/var/lib/virt/vmgrid/xml',
- },
- 'vmgrid::startvms' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- which virtaul machines should be started per default
- comma separated list. first will be started first,
- second second, and so on, max. 4 VMs
- End-of-Here
- content_descr => 'name of xml file e.g. scilin-5.4-wn(.xml)',
- default => undef,
- },
- 'vmgrid::vt' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- use hardware virtualization, if applicable
- override the settings of the corresponding virt plugin
- (only if supported by plugin)
- End-of-Here
- content_regex => qr{^(0|1)$},
- content_descr => '"0", "1" or "-" (for unset)',
- default => undef,
- },
- 'vmgrid::maxvcpus' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- use this number of vcpus as maximum for one vm
- (only if supported by plugin)
- End-of-Here
- content_regex => qr{^(1|2|4|8|16)$},
- content_descr => '1, 2, 4, 8, 16',
- default => undef,
- },
- 'vmgrid::minvcpus' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- use this number of vcpus as minimum for one vm
- (only if supported by plugin)
- End-of-Here
- content_regex => qr{^(1|2|4|8|16)$},
- content_descr => '1, 2, 4, 8, 16',
- default => undef,
- },
- 'vmgrid::memratio' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- define memory ratio in nn%
- order: grid client 1, 2, 3, 4, other VMs, host
- if desktop virtualization defined the free memory will be
- distributed between the remaining grid clients,
- according to their ratio
- if less than 4 VMs defined in startvms the memory is being
- reserved for a later manual start
- set to 0 if you do not intend to start them manually
- (only if supported by plugin)
- End-of-Here
- content_regex => qr{^(\d\d??,\d\d??,\d\d??,\d\d??,\d\d??,\d\d??)$},
- content_descr => '\d\d??,\d\d??,\d\d??,\d\d??,\d\d??,\d\d??',
- default => '40,0,0,0,40,20',
- },
- 'vmgrid::maxmem' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- maximum RAM used by one vm
- (only if supported by plugin)
- End-of-Here
- content_regex => qr{^(\d\d\d\d??\d??)$},
- content_descr => 'absolute amount: \d\d\d\d??\d??',
- default => undef,
- },
- 'vmgrid::minmem' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- minimum RAM used by one vm
- (only if supported by plugin)
- End-of-Here
- content_regex => qr{^(\d\d\d\d??\d??)$},
- content_descr => 'absolute amount: \d\d\d\d??\d??',
- default => undef,
- },
- };
-}
-
-sub installationPhase
-{
- my $self = shift;
- my $info = shift;
-
- my $pluginRepoPath = $info->{'plugin-repo-path'};
- my $openslxBasePath = $info->{'openslx-base-path'};
-
- $self->_writeRunlevelScript();
-
- # copy all needed files now:
- my $pluginName = $self->{'name'};
- my $pluginBasePath = "$openslxBasePath/lib/plugins/$pluginName/files";
- foreach my $file ( qw( vmgrid run-vmgrid.sh ) ) {
- copyFile("$pluginBasePath/$file", "$pluginRepoPath/");
- chmod 0755, "$pluginRepoPath/$file";
- }
-
- return;
-}
-
-sub removalPhase
-{
- my $self = shift;
- my $info = shift;
-
- return;
-}
-
-# Write the runlevelscript
-sub _writeRunlevelScript
-{
- my $self = shift;
- my $initfile = newInitFile();
-
- $initfile->setName("vmgrid");
- $initfile->setDesc("Setup environment for vmgrid. Part of OpenSLX vmgrid plugin.");
-
- # todo: Function need to be formated proper... not important right now
- #$initfile->addFunction(
- # 'running',
- # 'lsmod | grep -q "$1[^_-]"'
- #);
-
-# # Is a VM running?
-# my $runningvms = unshiftHereDoc(<<' End-of-Here');
-# if [ -e /tmp/vmgrid/vmgrid.pids ]; then
-# for pid in $(cat /tmp/vmgrid/vmgrid.pids); do
-# if ps aux | grep " ${pid} " | grep vmgrid; then
-# echo "Running: ${pid}"
-# fi
-# done
-# fi
-# End-of-Here
-
- # Kill all VMS!
- my $killvms = unshiftHereDoc(<<' End-of-Here');
- if [ -e /tmp/vmgrid/vmgrid.pids ]; then
- for pid in $(cat /tmp/vmgrid/vmgrid.pids); do
- if ps aux | grep " ${pid} " | grep vmgrid; then
- kill ${pid}
- fi
- done
- fi
- End-of-Here
-
- # FORCE: Kill all VMS!
- my $fkillvms = unshiftHereDoc(<<' End-of-Here');
- if [ -e /tmp/vmgrid/vmgrid.pids ]; then
- for pid in $(cat /tmp/vmgrid/vmgrid.pids); do
- if ps aux | grep " ${pid} " | grep vmgrid; then
- kill -9 ${pid}
- fi
- done
- fi
- End-of-Here
-
- $initfile->addFunction(
- 'start',
- ' vmgrid',
- );
- $initfile->addToCase(
- 'kill',
- 'killvms'
- );
- $initfile->addToCase(
- 'force-kill',
- 'fkillvms'
- );
- $initfile->addToCase(
- 'status',
- 'runningvms'
- );
- $initfile->addToCase(
- 'restart',
- 'stop && start'
- );
-
-# # get distro version
-# my $distro = (split('-',$self->{'os-plugin-engine'}->distroName()))[0];
-# my $runlevelscript = getInitFileForDistro($initfile, $distro);
-#
-# spitFile("$self->{'pluginRepositoryPath'}/vmgrid-slx", $runlevelscript);
-}
-
-1;
diff --git a/os-plugins/plugins/vmgrid/XX_vmgrid.sh b/os-plugins/plugins/vmgrid/XX_vmgrid.sh
deleted file mode 100644
index 16f5fbd1..00000000
--- a/os-plugins/plugins/vmgrid/XX_vmgrid.sh
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright (c) 2010 - RZ Uni Freiburg
-# Copyright (c) 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
diff --git a/os-plugins/plugins/vmgrid/files/run-vmgrid.sh b/os-plugins/plugins/vmgrid/files/run-vmgrid.sh
deleted file mode 100644
index 51cb5dbc..00000000
--- a/os-plugins/plugins/vmgrid/files/run-vmgrid.sh
+++ /dev/null
@@ -1,430 +0,0 @@
-#!/bin/bash
-# -----------------------------------------------------------------------------
-# Copyright (c) 2010 - RZ Uni FR
-# Copyright (c) 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/
-# -----------------------------------------------------------------------------
-# vmgrid
-# - This is the generic wrapper for the several virtualization solutions...
-################################################################################
-
-. /etc/opt/openslx/openslx.conf
-
-################################################################################
-### Define default dirs / get configs
-################################################################################
-
-PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins
-PLUGINCONFVMGRID=${PLUGINCONFROOT}/vmgrid
-RWSHARE=/var/opt/openslx/plugins/vmgrid/share
-# include general configuration from vmgrid
-[ -f ${PLUGINCONFVMGRID}/vmgrid.conf ] && \
- . ${PLUGINCONFVMGRID}/vmgrid.conf
-# load general virtualization information
-[ -f ${PLUGINCONFROOT}/virtualization/virtualization.conf ] && \
- . ${PLUGINCONFROOT}/virtualization/virtualization.conf
-# get the vmchooser_active var
-[ -f ${PLUGINCONFROOT}/vmchooser/vmchooser.conf ] && \
- . ${PLUGINCONFROOT}/vmchooser/vmchooser.conf
-
-################################################################################
-### Functions used throughout the script
-################################################################################
-
-# function to write to stdout and logfile
-LOGFILE=${OPENSLX_DEFAULT_LOGDIR}/run-vmgrid.${USER}.$$.log
-writelog () {
- # write to stdout
- echo -e "$1"
- # log into file
- echo -e "$1" >> ${LOGFILE}
- # log into share dir, so that log is available in vm as well
- echo -e "$1" >> ${vmgrid_rwmnt}/logs/run-vmgrid.${USER}.$$.log
-}
-
-# remove config dirs when exit
-cleanexit () {
- if echo "${RMDIRS}" 2>/dev/null | grep -q ${vmgrid_virt}; then
- writelog "${vmgrid_virt} exited. Cleanning up... \c"
- rm -rf ${RMDIRS} >/dev/null 2>&1
- writelog "done"
- fi
-
- exit "$1"
-}
-
-################################################################################
-### Get XML file and dir
-################################################################################
-
-# check if mem, nice or graphical mode set
-headless=1
-unice=19
-while [ $# -gt 0 ]; do
- case "$1" in
- -h|--help)
- echo -e "Usage: run-vmgrid.sh [-g] [--mem <memory size in MB>] \c"
- echo -e "[--nice <nice level>] [/path/]filename[.xml]"
- exit
- ;;
- -g)
- headless=0
- ;;
- --mem)
- # get a result which can be divided through 4
- if echo $2 | grep -qE \
- '^[2-9][0-9][0-9]$|^[1-9][0-9][0-9][0-9]$|^1[0-9][0-9][0-9][0-9]$';
- then
- forcemem=$(expr $2 / 4 \* 4)
- else
- echo "memory $2 not supported (200-19999)!"
- exit 1
- fi
- shift
- ;;
- --nice)
- # set nice level
- if echo $2 | grep -qE '^-[1-9]$|-1[0-9]$|^-20$|^[0-9]$|^1[0-9]$'; then
- unice=$2
- else
- echo "nice level $2 does not exist!"
- exit 1
- fi
- shift
- ;;
- *)
- xmlfile=$@
- break
- ;;
- esac
- shift
-done
-
-# absolute or relative path?
-if ls ${xmlfile} 2>/dev/null | grep '/' >/dev/null 2>&1; then
- xmlpath=$(dirname ${xmlfile})
- xmlfile=$(basename ${xmlfile})
-else
- xmlpath=${vmgrid_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!"
- run-vmgrid.sh -h &
- exit 1
-fi
-
-# start to log, create shrare log dir
-mkdir -m 1777 -p ${vmgrid_rwmnt}/logs
-echo "Starting to log at $(date)" \
- >${vmgrid_rwmnt}/logs/run-vmgrid.${USER}.$$.log
-
-# test how many instances running
-runningvms=$(ps aux | grep "run-vmgrid.sh " | grep -v grep | wc -l)
-# 2 steps, /w only one is seems not to work
-runningvms=$(expr ${runningvms} - 1)
-# if Xen use different method
-if [ "${vmgrid_virt}" = "xen" ]; then
- runningvms=$(xm list 2>/dev/null | grep -vE "Domain-0|Name.*ID" | wc -l)
- runningvms=$(expr ${runningvms} + 1)
-fi
-# check value
-if [ ${runningvms} -le 0 ]; then
- writelog "Error in value: Running VMs: ${runningvms}. Exit!"
- exit 1
-fi
-# check if vmchooser plugin installed
-if [ -n "${vmchooser_active}" ] && [ ${runningvms} -gt 1 ]; then
- # only allow one instance of vmgrid
- writelog "Already 1 VMs running and vmchooser plugin is active."
- writelog "Can't start ${xmlfile}, exiting!"
- exit 1
-# else allow max. 4 instances
-elif [ ${runningvms} -gt 4 ]; then
- writelog "Already 4 VMs running, exiting!"
- exit 1
-fi
-VM_ID="0${runningvms}"
-
-# 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
-
-################################################################################
-### Logo for console
-################################################################################
-
-cat <<EOL
- __ __
- .----.--.--.-----.___.--.--.--------.-----.----.|__|.--| |
- | _| | | |___| | | | _ | _|| || _ |
- |__| |_____|__|__| \___/|__|__|__|___ |__| |__||_____|
- |_____|
- OpenSLX virtual machine environment preparation script ...
-
-EOL
-
-################################################################################
-### Read needed variables from XML file
-################################################################################
-
-writelog "Starting configuration..."
-writelog "\tVM-ID:\t\t\t${VM_ID}"
-writelog "\tLogfile:\t\t${OPENSLX_DEFAULT_LOGDIR}/run-vmgrid.${USER}.$$.log"
-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 or dir
-imgname=$(grep -io '<image_name param=.*"' ${xmlfile} \
- | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
-
-# image mode
-imgmode=$(grep -io '<image_mode param=.*"' ${xmlfile} \
- | sed -e "s/&.*;/; /g" | awk -F '"' '{ print $2 }')
-
-# get boot attr
-boot=$(grep -io 'boot param=.*"' ${xmlfile} | awk -F '"' '{ print $2 }')
-diskless=0
-
-# special rw image
-if [ "${imgmode}" = "rwimg" ]; then
- # maybe you want to use an empty rw imgae?
- # define only for writelog, will be set in the plugin include again!
- vmpath="{special rw image}"
- # add new path for rwimg
- imgpath=${vmgrid_rwmnt}/specialrwimages
- unset $imgname
- mkdir -m 1777 -p ${imgpath}
-# diskless boot
-elif [ "${boot}" = "n" ] && [ -z "${imgname}" ]; then
- diskless=1
- vmpath="{diskless boot}"
-# imagename /w full path
-elif echo ${imgname} 2>/dev/null | grep -q '^/' >/dev/null 2>&1; then
- imgpath=$(dirname ${imgname})
- imgname=$(basename ${imgname})
- vmpath=${imgpath}/${imgname}
-# get path from var
-else
- imgpath=${vmgrid_imgpath}
- vmpath=${imgpath}/${imgname}
-fi
-
-# check if virtual machine container file exists, only if not rwimg
-if ! [ -e "${vmpath}" ] && [ "${imgmode}" != "rwimg" ] && [ ${diskless} -eq 0 ];
-then
- writelog "Virtual machine image or directory ${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}
-
-[ "${imgmode}" != "rwimg" ] && [ ${diskless} -eq 0 ] \
- && writelog "\tVM Image dir:\t\t${imgpath}"
-writelog "\tVM file/dir:\t\t$vmpath"
-
-# is there an additional configuration provided?
-additional_config=$(grep -o 'additional_config param=.*"' ${xmlfile} \
- | sed -e "s/&.*;/; /g" | awk -F '"' '{print $2}')
-
-# 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
-
-# check for virt
-if [ "${vmgrid_virt}" != "${xmlvirt}" ]; then
- writelog "The virtual machine specified in ${xmlfile}"
- writelog "does not match the virtualization used here (${vmgrid_virt})"
- exit 1
-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])
-
-# define redirects
-redirects=$(grep -ic '<redirect name=.*"' ${xmlfile})
-[ -z "${redirects}" ] && redirects=0
-(( i=1 ))
-while [ ${i} -le ${redirects} ]; do
- # get only the $i-th line
- redirect_name[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \
- | grep -o "name=\".*" | awk -F '"' '{ print $2 }')
- redirect_proto[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \
- | grep -o "proto=\".*" | awk -F '"' '{ print $2 }')
- redirect_hport[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \
- | grep -o "hostport=\".*" | awk -F '"' '{ print $2 }')
- redirect_gport[$i]=$(grep -m ${i} -io '<redirect.*' ${xmlfile} | tail -n 1 \
- | grep -o "guestport=\".*" | awk -F '"' '{ print $2 }')
- (( i=$i+1 ))
-done
-
-writelog "\tVirtualization:\t\t$xmlvirt"
-writelog "\tVM name:\t\t$vm_name"
-writelog "\tVM short name:\t\t$vm_shortname"
-
-###############################################################################
-### Declaration of default variables
-###############################################################################
-
-# make sure cpu_cores is not empty
-cpu_cores=${cpu_cores:-"1"}
-#vmgrid::maxvcpus
-#vmgrid::minvcpus
-# check for CPU virtualization flags
-#vmgrid::vt
-
-# total amount of memory defined in stage 3
-permem=60
-# get a result which can be divided through 4
-mem=$(expr ${totalmem} / 100 \* ${permem} / 4 \* 4)
-#vmgrid::maxmem
-#vmgrid::minmem
-
-# configuring ethernet mac address: first 3 bytes are fixed (00:50:56)
-# 4th byte is the VM-ID
-# 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])
-
-# ide is expected default, test for the virtual disk image type should
-# be done while creating the runscripts ...
-# TODO: cdrom / floppy?
-ide="TRUE"
-scsi="FALSE"
-hddrv="ide"
-cdrom0="FALSE"
-audio="false"
-remotedesktopport="590${VM_ID}"
-
-# add rw share
-sharepath="${vmgrid_rwmnt}/folders/${vm_shortname}"
-mkdir -p ${sharepath}
-chmod -f 1777 "${vmgrid_rwmnt}/folders"
-sharename="share"
-
-# set hostname: using original hostname and adding string
-hostname="vmgrid${VM_ID}-$(hostname)"
-
-writelog "\tVM Hostname:\t\t$hostname"
-
-################################################################################
-### Setup the rest of the environment and run the configured vm
-################################################################################
-
-# Copy guest configuration (with added information) config.xml to be accessed
-# via virtual floppy
-# TODO: virt-floppy needed?
-
-# Get all virtual machine specific stuff from the respective include file
-if [ -e ${PLUGINCONFROOT}/${vmgrid_virt}/run-virt.include ] ; then
- writelog "Starting ${vmgrid_virt} specific part ..."
- self=${vmgrid_virt}
- . ${PLUGINCONFROOT}/${vmgrid_virt}/run-virt.include
-else
- writelog "Failed because of missing ${vmgrid_virt} plugin"
- exit 1
-fi
-
-# start graphical mode
-if [ ${headless} -eq 0 ]; then
- if [ -z "${VIRTCMD}" ]; then
- writelog "Grapical mode not available, exiting!"
- cleanexit 1
- fi
- writelog "Starting ${vmgrid_virt} in graphical mode /w nice level ${unice}..."
- # start /w low nice level
- nice -n ${unice} ${VIRTCMD} ${VIRTCMDOPTS} 2>/dev/null
-# start headless
-elif [ -n "${VIRTCMDHL}" ]; then
- writelog "Starting ${vmgrid_virt} in headless mode /w nice level ${unice}..."
- # start /w low nice level
- nice -n ${unice} ${VIRTCMDHL} ${VIRTCMDOPTSHL} 2>/dev/null
-else
- writelog "${vmgrid_virt}: No headless mode defined, exiting!"
- cleanexit 1
-fi
-
-# postrun for scripts after virtualization finishes
-if [ -n "${POSTRUN}" ]; then
- eval ${POSTRUN} >/dev/null 2>&1
-fi
-
-cleanexit 0
-exit 0
diff --git a/os-plugins/plugins/vmgrid/files/vmgrid b/os-plugins/plugins/vmgrid/files/vmgrid
deleted file mode 100644
index 2bb91481..00000000
--- a/os-plugins/plugins/vmgrid/files/vmgrid
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/bin/bash
-# -----------------------------------------------------------------------------
-# Copyright (c) 2010 - RZ Uni FR
-# Copyright (c) 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/
-# -----------------------------------------------------------------------------
-# vmgrid
-# - Script for autostarts defined in vmgrid::startvms
-################################################################################
-
-# include default directories
-. /etc/opt/openslx/openslx.conf
-
-################################################################################
-### Manual Start
-################################################################################
-
-if [ -n "$1" ]; then
- if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
- echo -e "Usage: vmgrid [[-g] [--mem <memory size in MB>] \c"
- echo -e "[--nice <nice level>] [/path/]filename[.xml]]"
- exit 0
- else
- echo "Starting run-vmgrid.sh with options '$@'"
- run-vmgrid.sh $@ 2>/dev/null
- exit
- fi
-fi
-
-################################################################################
-### Define default dirs / get configs
-################################################################################
-
-PLUGINCONFROOT=${OPENSLX_DEFAULT_CONFDIR}/plugins
-PLUGINCONFDIR=${PLUGINCONFROOT}/vmgrid
-RWSHARE=/var/opt/openslx/plugins/vmgrid/share
-# include general configuration from vmgrid
-[ -f ${PLUGINCONFDIR}/vmgrid.conf ] && \
- . ${PLUGINCONFDIR}/vmgrid.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
-writelog () {
- # write to stdout
- echo -e "$1"
- # log into file
- echo -e "$1" >> ${OPENSLX_DEFAULT_LOGDIR}/vmgrid.${USER}.$$.log
- # log into share dir, so that log is available in vm as well
- echo -e "$1" >> ${vmgrid_rwmnt}/logs/vmgrid.${USER}.$$.log
-}
-
-################################################################################
-### Configure VMs for autostart and set RAM
-################################################################################
-
-# start to log, create share log dir
-mkdir -m 1777 -p ${vmgrid_rwmnt}/logs
-mkdir -m 1777 -p /tmp/vmgrid
-mkdir -p /tmp/vmgrid/${USER}
-echo "Starting to log at $(date)" \
- >${vmgrid_rwmnt}/logs/vmgrid.${USER}.$$.log
-
-if [ -z "${hostratio}" ]; then
- writelog "There has been an error in the memory configuration in stage 3"
- writelog "Please check your memory ratio settings, exiting!"
- exit 1
-fi
-
-if [ -z "${hostratio}" ]; then
- writelog "There has been an error in the memory configuration in stage 3"
- writelog "Please check your memory ratio settings, exiting!"
- exit 1
-fi
-
-# remove blanks
-vmgrid_startvms=$(echo ${vmgrid_startvms} | sed -e "s, *,,g")
-vmgrid_memratio=$(echo ${vmgrid_memratio} | sed -e "s, *,,g")
-
-# hostmem, mainvirt from virtualization plugin
-# ratio minus other vms and host
-restratio=$(expr 100 - ${hostratio} - ${mainvirtratio})
-
-# hostmem, totalmem, mainvirtmem from virtualization plugin
-# calculate freemem
-freemem=$(expr ${totalmem} - ${hostmem} - ${mainvirtmem} 2>/dev/null)
-if [ ${freemem} -lt 512 2>/dev/null ]; then
- writelog "Not enough free RAM for this plugin, free: ${freemem} MB"
- exit 1
-fi
-
-# get clients mem ratio
-vmsumratios=0
-for i in {1..4}; do
- vm[$i]=$(echo ${vmgrid_startvms} | awk -F ',' '{print $1}')
- # remove ${vm[$i]} from list because of '{print $1}'
- vmgrid_startvms=$(echo ${vmgrid_startvms} | sed -e "s,${vm[$i]}\,*,,")
- vmratio[$i]=$(echo ${vmgrid_memratio} | awk -F ',' '{print $1}')
- # remove ${vmratio[$i]} from list because of '{print $1}'
- vmgrid_memratio=$(echo ${vmgrid_memratio} | sed -e "s/${vmratio[$i]},*//")
- vmsumratios=$(expr ${vmsumratios} + ${vmratio[$i]} 2>/dev/null)
-done
-
-for i in {1..4}; do
- # calculate VMs mem: mem = $freemem * $vmratio/100 * 100/$restratio
- # multiple of 4
- vmmem[$i]=$(expr ${freemem} \* ${vmratio[$i]} / ${restratio} / 4 \* 4 \
- 2>/dev/null)
- if [ -n "${vm[$i]}" ] && [ ${vmmem[$i]} -lt 512 2>/dev/null ]; then
- writelog "Not enough free RAM for ${vm[$i]} (min. 512 MB), \c"
- writelog "free: ${vmmem[$i]} MB"
- unset vm[$i]
- fi
-done
-
-################################################################################
-### Start the VMs
-################################################################################
-
-# start vms
-for i in {1..4}; do
- if [ -n "${vm[$i]}" ]; then
- alreadyrunning=$(ps aux | grep run-vmgrid.sh | grep -v grep \
- | grep "${vm[$i]}" | wc -l)
- # if Xen use different method
- if [ "${vmgrid_virt}" = "xen" ]; then
- alreadyrunning=$(xm list 2>/dev/null | grep -vE "Domain-0|Name.*ID" \
- | grep "${vm[$i]}-0.$" | wc -l)
- fi
- if [ ${alreadyrunning} -gt 0 2>/dev/null ]; then
- writelog "${vm[$i]} already running, skipping!"
- else
- writelog "Starting ${vm[$i]} via run-vmgrid.sh with ${vmmem[$i]} MB RAM"
- run-vmgrid.sh --mem ${vmmem[$i]} ${vm[$i]} 2>/dev/null &
- echo $! > /tmp/vmgrid/${USER}/vmgrid.pids
- # wait 10 secs for the next vm to start
- sleep 10
- fi
- fi
-done
-
-exit 0
diff --git a/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh b/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh
deleted file mode 100644
index 73a65ac5..00000000
--- a/os-plugins/plugins/vmgrid/init-hooks/80-after-plugins/virtualization.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright (c) 2010 - RZ Uni Freiburg
-# Copyright (c) 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
-
-# virtual virtualization plugin
-# make sure that this file is the same in vmgrid and vmchooser plugin!
-
-# include default directories
-. /etc/openslx.conf
-
-CONFFILEVMCHOOSER="/initramfs/plugin-conf/vmchooser.conf"
-CONFFILEVMGRID="/initramfs/plugin-conf/vmgrid.conf"
-PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/virtualization
-
-# check if plugins available
-active=0
-[ -f ${CONFFILEVMCHOOSER} ] && . ${CONFFILEVMCHOOSER}
-[ "x${vmchooser_active}" = "x1" ] && active=1
-[ -f ${CONFFILEVMGRID} ] && . ${CONFFILEVMGRID}
-[ "x${vmgrid_active}" = "x1" ] && active=1
-
-[ $DEBUGLEVEL -gt 0 ] \
- && echo -e "Executing the 'virtualization' plugin ... \c"
-
-if [ ${active} -ne 0 ] ; then
-
- # load general configuration
- . /etc/initramfs-setup
- # include functions
- . /etc/functions
-
- testmkd ${PLUGINCONFDIR}
-
- # check if vmgrid active and change free mem
- totalmem=$(expr $(grep -i "memtotal" /proc/meminfo \
- | awk '{print $2}') / 1024)
- echo "totalmem=${totalmem}" >> ${PLUGINCONFDIR}/virtualization.conf
-
- if [ "x${vmgrid_active}" = "x1" ]; then
-
- totalmemtest=$(expr $(echo ${vmgrid_memratio} \
- | awk -F ',' '{print $1" + "$2" + "$3" + "$4" + "$5" + "$6}'))
-
- # not more than 100% memory assigned
- if [ ${totalmemtest} -le 100 2>/dev/null ]; then
-
- # host mem
- hostratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $6}')
- hostmem=$(expr ${totalmem} \* ${hostratio} / 100 2>/dev/null)
- if [ ${hostmem} -lt 256 2>/dev/null ]; then
- # min. 256 MB for host
- hostmem=256
- fi
-
- # main vm mem (vmchooser)
- if [ "x${vmchooser_active}" = "x1" ]; then
- mainvirtratio=$(echo ${vmgrid_memratio} | awk -F ',' '{print $5}')
- mainvirtmem=$(expr ${totalmem} \* ${mainvirtratio} / 100 2>/dev/null)
- if [ ${mainvirtmem} -lt 512 2>/dev/null ]; then
- # min. 512 for vmchooser
- mainvirtmem=512
- fi
- else
- mainvirtratio=0
- mainvirtmem=0
- fi
-
- cat << EOF >> ${PLUGINCONFDIR}/virtualization.conf
-hostratio=${hostratio}
-hostmem=${hostmem}
-mainvirtratio=${mainvirtratio}
-mainvirtmem=${mainvirtmem}
-EOF
-
- fi
- fi
-
- # cpu cores
- CPU_CORES=$(grep 'processor.*:' /proc/cpuinfo | wc -l)
- if [ "${CPU_CORES}" -gt "1" 2>/dev/null ]; then
- echo "cpu_cores=${CPU_CORES}" \
- >> ${PLUGINCONFDIR}/virtualization.conf
- else
- echo 'cpu_cores=1' >> ${PLUGINCONFDIR}/virtualization.conf
- fi
-
- # arch
- echo "host_arch=$(uname -m)" >> ${PLUGINCONFDIR}/virtualization.conf
-
- # VT enabled cpu?
- if grep -q ^flags.*\\\<vmx\\\> /proc/cpuinfo; then
- echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf
- echo 'kvm_module="kvm_intel"' >> ${PLUGINCONFDIR}/virtualization.conf
- elif grep -q ^flags.*\\\<svm\\\> /proc/cpuinfo; then
- echo "vtflag=1" >> ${PLUGINCONFDIR}/virtualization.conf
- echo 'kvm_module="kvm_amd"' >> ${PLUGINCONFDIR}/virtualization.conf
- else
- echo "vtflag=0" >> ${PLUGINCONFDIR}/virtualization.conf
- fi
-
- # write mac
- echo "hostmacaddr=${macaddr}" >> ${PLUGINCONFDIR}/virtualization.conf
- # ip addr
- echo "hostip=${clientip}" >> ${PLUGINCONFDIR}/virtualization.conf
- # hostname
- echo "hostname=${host_name}" >> ${PLUGINCONFDIR}/virtualization.conf
-
- # get further hw information
- waitfor /etc/hwinfo.cdrom
- j=0
- for i in $(cat /etc/hwinfo.cdrom); do
- echo "cdrom_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf
- j=$(expr $j + 1)
- done
-
- waitfor /etc/hwinfo.floppy
- j=0
- for i in $(cat /etc/hwinfo.floppy); do
- echo "floppy_$j=$i" >> ${PLUGINCONFDIR}/virtualization.conf
- j=$(expr $j + 1)
- done
-
- # copy host information to rwshare of vmgrid plugin
- if [ "x${vmgrid_active}" = "x1" ]; then
- cp ${PLUGINCONFDIR}/virtualization.conf ${vmgrid_rwmnt}/host.conf
- fi
-
- # finished ...
- [ $DEBUGLEVEL -gt 0 ] \
- && echo "ok"
-else
- [ $DEBUGLEVEL -gt 0 ] \
- && echo "failed"
-fi