summaryrefslogtreecommitdiffstats
path: root/src/os-plugins/plugins/vmchooser
diff options
context:
space:
mode:
Diffstat (limited to 'src/os-plugins/plugins/vmchooser')
-rw-r--r--src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm64
-rw-r--r--src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm49
-rw-r--r--src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm47
-rw-r--r--src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm50
-rw-r--r--src/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm143
-rw-r--r--src/os-plugins/plugins/vmchooser/README21
-rw-r--r--src/os-plugins/plugins/vmchooser/XX_vmchooser.sh57
-rw-r--r--src/os-plugins/plugins/vmchooser/files/default.desktop10
-rwxr-xr-xsrc/os-plugins/plugins/vmchooser/files/mesgdispbin0 -> 222820 bytes
l---------src/os-plugins/plugins/vmchooser/files/mkdosfs1
-rwxr-xr-xsrc/os-plugins/plugins/vmchooser/files/printer.sh10
-rw-r--r--src/os-plugins/plugins/vmchooser/files/run-virt.sh402
-rwxr-xr-xsrc/os-plugins/plugins/vmchooser/files/scanner.sh4
-rwxr-xr-xsrc/os-plugins/plugins/vmchooser/files/vm-template.xml60
-rw-r--r--src/os-plugins/plugins/vmchooser/files/vmchooserbin0 -> 1364048 bytes
-rwxr-xr-xsrc/os-plugins/plugins/vmchooser/files/xmlfilter.sh50
-rw-r--r--src/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh21
-rw-r--r--src/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh144
18 files changed, 1133 insertions, 0 deletions
diff --git a/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm
new file mode 100644
index 00000000..43e4ea1f
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Base.pm
@@ -0,0 +1,64 @@
+# Copyright (c) 2008 - 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/
+# -----------------------------------------------------------------------------
+# vmchooser/OpenSLX/Distro/Base.pm
+# - provides base implementation of the Distro API for the vmchooser plugin.
+# -----------------------------------------------------------------------------
+package vmchooser::OpenSLX::Distro::Base;
+
+use strict;
+use warnings;
+
+our $VERSION = 1.01; # API-version . implementation-version
+
+use File::Basename;
+use File::Path;
+use Scalar::Util qw( weaken );
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+################################################################################
+### interface methods
+################################################################################
+sub new
+{
+ my $class = shift;
+ my $self = {};
+ return bless $self, $class;
+}
+
+sub initialize
+{
+ my $self = shift;
+ $self->{engine} = shift;
+ weaken($self->{engine});
+ # avoid circular reference between plugin and its engine
+
+ return 1;
+}
+
+
+sub copyDefaultSession
+{
+ my $self = shift;
+ my $pluginroot = shift;
+
+
+ # Take the default path of SuSE
+ # (as we have the most experience with it)
+ if( -f "/etc/X11/session/default.desktop") {
+ rename("/etc/X11/session/default.desktop",
+ "/etc/X11/session/default.desktop.back")
+ }
+ copyFile("$pluginroot/default.desktop","/etc/X11/session");
+
+ return 1;
+} \ No newline at end of file
diff --git a/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm
new file mode 100644
index 00000000..173f249e
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Debian.pm
@@ -0,0 +1,49 @@
+# Copyright (c) 2008 - 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/
+# -----------------------------------------------------------------------------
+# vmchooser/OpenSLX/Distro/Debian.pm
+# - provides Debian implementation of the Distro API for the vmchooser plugin.
+# -----------------------------------------------------------------------------
+package vmchooser::OpenSLX::Distro::Debian;
+
+use strict;
+use warnings;
+
+our $VERSION = 1.01; # API-version . implementation-version
+
+use base qw(vmchooser::OpenSLX::Distro::Base);
+
+use File::Basename;
+use File::Path;
+use Scalar::Util qw( weaken );
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+################################################################################
+### interface methods
+################################################################################
+
+sub copyDefaultSession
+{
+ my $self = shift;
+ my $pluginroot = shift;
+
+
+ # Take the default path of SuSE
+ # (as we have the most experience with it)
+ if( -f "/usr/share/xsessions/default.desktop") {
+ rename("/usr/share/xsessions/default.desktop",
+ "/usr/share/xsessions/default.desktop.back")
+ }
+ copyFile("$pluginroot/default.desktop","/usr/share/xsessions");
+
+ return 1;
+} \ No newline at end of file
diff --git a/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm
new file mode 100644
index 00000000..c93a066b
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Suse.pm
@@ -0,0 +1,47 @@
+# Copyright (c) 2008..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/
+# -----------------------------------------------------------------------------
+# vmchooser/OpenSLX/Distro/Suse.pm
+# - provides Suse implementation of the Distro API for the vmchooser plugin.
+# -----------------------------------------------------------------------------
+package vmchooser::OpenSLX::Distro::Suse;
+
+use strict;
+use warnings;
+
+our $VERSION = 1.01; # API-version . implementation-version
+
+use base qw(vmchooser::OpenSLX::Distro::Base);
+
+use File::Basename;
+use File::Path;
+use Scalar::Util qw( weaken );
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+################################################################################
+### interface methods
+################################################################################
+
+sub copyDefaultSession
+{
+ my $self = shift;
+ my $pluginroot = shift;
+
+ # Take the default path of SuSE
+ # (as we have the most experience with it)
+ if( -f "/etc/X11/session/default.desktop") {
+ rename("/etc/X11/session/default.desktop",
+ "/etc/X11/session/default.desktop.back")
+ }
+ copyFile("$pluginroot/default.desktop","/etc/X11/session");
+ return 1;
+} \ No newline at end of file
diff --git a/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm
new file mode 100644
index 00000000..1677321f
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/OpenSLX/Distro/Ubuntu.pm
@@ -0,0 +1,50 @@
+# Copyright (c) 2008 - 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/
+# -----------------------------------------------------------------------------
+# vmchooser/OpenSLX/Distro/Ubuntu.pm
+# - provides Ubuntu implementation of the Distro API for the vmchooser plugin.
+# -----------------------------------------------------------------------------
+package vmchooser::OpenSLX::Distro::Ubuntu;
+
+use strict;
+use warnings;
+
+our $VERSION = 1.01; # API-version . implementation-version
+
+use base qw(vmchooser::OpenSLX::Distro::Base);
+
+use File::Basename;
+use File::Path;
+use Scalar::Util qw( weaken );
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+################################################################################
+### interface methods
+################################################################################
+
+
+sub copyDefaultSession
+{
+ my $self = shift;
+ my $pluginroot = shift;
+
+
+ # Take the default path of SuSE
+ # (as we have the most experience with it)
+ if( -f "/usr/share/xsessions/default.desktop") {
+ rename("/usr/share/xsessions/default.desktop",
+ "/usr/share/xsessions/default.desktop.back")
+ }
+ copyFile("$pluginroot/default.desktop","/usr/share/xsessions");
+
+ return 1;
+} \ No newline at end of file
diff --git a/src/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm b/src/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm
new file mode 100644
index 00000000..71ce3637
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/OpenSLX/OSPlugin/vmchooser.pm
@@ -0,0 +1,143 @@
+# Copyright (c) 2008, 2009 - 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/
+# -----------------------------------------------------------------------------
+# vmchooser.pm
+# - allows user to pick from a list of virtual machine images
+#
+# - serves as base for virtualizer plugins / and requires one of these
+# -----------------------------------------------------------------------------
+package OpenSLX::OSPlugin::vmchooser;
+
+use strict;
+use warnings;
+
+use base qw(OpenSLX::OSPlugin::Base);
+
+use OpenSLX::Basics;
+use OpenSLX::Utils;
+
+sub new
+{
+ my $class = shift;
+
+ my $self = {
+ name => 'vmchooser',
+ };
+
+ return bless $self, $class;
+}
+
+sub getInfo
+{
+ my $self = shift;
+
+ return {
+ description => unshiftHereDoc(<<' End-of-Here'),
+ allows user to pick from a list of different virtual machine images
+ based on xml-files, which tell about available images. One of the
+ virtualization tools like vmware*, virtualbox or qemu/kvm is
+ required.
+ End-of-Here
+ precedence => 50,
+ required => [ qw( desktop ) ],
+ };
+}
+
+sub getAttrInfo
+{
+ my $self = shift;
+
+ return {
+ 'vmchooser::active' => {
+ applies_to_systems => 1,
+ applies_to_clients => 1,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ should the 'vmchooser'-plugin be executed during boot?
+ End-of-Here
+ content_regex => qr{^(0|1)$},
+ content_descr => '1 means active - 0 means inactive',
+ default => '1',
+ },
+ 'vmchooser::env' => {
+ applies_to_systems => 1,
+ applies_to_clients => 1,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ environment, seperates pools based on XML configuration
+ End-of-Here
+ #TODO:
+ #content_regex => qr{^(0|1)$},
+ content_descr => 'name of environment',
+ default => 'default',
+ },
+ 'vmchooser::xmlpath' => {
+ applies_to_systems => 1,
+ applies_to_clients => 1,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ location of XML configuration for virtual images
+ End-of-Here
+ #TODO:
+ #content_regex => qr{^(0|1)$},
+ content_descr => 'path to xml files',
+ default => '/var/lib/virt',
+ },
+
+ };
+}
+
+sub installationPhase
+{
+ my $self = shift;
+ my $info = shift;
+
+ my $pluginRepoPath = $info->{'plugin-repo-path'};
+ my $openslxBasePath = $info->{'openslx-base-path'};
+
+ # copy all needed files now:
+ my $pluginName = $self->{'name'};
+ my $pluginBasePath = "$openslxBasePath/lib/plugins/$pluginName/files";
+ foreach my $file ( qw( vmchooser printer.sh scanner.sh xmlfilter.sh
+ default.desktop mesgdisp run-virt.sh ) ) {
+ copyFile("$pluginBasePath/$file", "$pluginRepoPath/");
+ chmod 0755, "$pluginRepoPath/$file";
+ }
+
+ # set ditro-specific default session
+ $self->{distro}->copyDefaultSession($pluginRepoPath);
+
+ return;
+}
+
+sub removalPhase
+{
+ my $self = shift;
+ my $info = shift;
+
+ return;
+}
+
+sub copyRequiredFilesIntoInitramfs
+{
+ my $self = shift;
+ my $targetPath = shift;
+ my $attrs = shift;
+ my $makeInitRamFSEngine = shift;
+ my $pluginRepoPath = "$openslxConfig{'base-path'}/lib/plugins/vmchooser";
+
+ $makeInitRamFSEngine->addCMD(
+ "cp -a $pluginRepoPath/files/mkdosfs $targetPath/bin"
+ );
+
+ vlog(1, _tr("vmchooser-plugin: ..."));
+
+ return;
+}
+
+1;
+
diff --git a/src/os-plugins/plugins/vmchooser/README b/src/os-plugins/plugins/vmchooser/README
new file mode 100644
index 00000000..29434bcc
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/README
@@ -0,0 +1,21 @@
+
+VirtualMachine Chooser - plugin
+===============================
+
+This Plugin uses an additionally provided program to display a list of virtual
+machine sessions (vm's provided by other plugins), from which a user can choose.
+
+This Programm is included in binary format. You can look into the sources at
+svn://svn.openslx.org/srv/svn/openslx/openslx-src-tools/os-plugins/plugins/vmchooser/
+
+There you can change the program to your needs and compile it with the included
+Makefile.
+
+Additionally the plugin provides a script to start a specific virtual machine
+preconfigured. Parts of the configuration are taken from an xml file which
+should be provided with each container file. You will find additional infor-
+mation online at: http://lab.openslx.org/wiki/openslx/Vmchooser
+
+Use at your own risk! No warranty is given by the author of this software for
+any purposes!
+
diff --git a/src/os-plugins/plugins/vmchooser/XX_vmchooser.sh b/src/os-plugins/plugins/vmchooser/XX_vmchooser.sh
new file mode 100644
index 00000000..168bcda1
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/XX_vmchooser.sh
@@ -0,0 +1,57 @@
+# Copyright (c) 2008, 2009 - 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/vmchooser.conf"
+PLUGINCONFDIR=/mnt/${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser
+BINDIR=/mnt/${OPENSLX_DEFAULT_BINDIR}
+PLUGINDIR=${OPENSLX_DEFAULT_DIR}/plugin-repo/vmchooser
+VIRTDIR=/mnt/${OPENSLX_DEFAULT_VIRTDIR}
+
+if [ -e $CONFFILE ]; then
+ . $CONFFILE
+ if [ $vmchooser_active -ne 0 ] ; then
+ [ $DEBUGLEVEL -gt 0 ] \
+ && echo "vmchooser: copying stage3 configuration file ..."
+ testmkd ${PLUGINCONFDIR}/loopimg
+ testmkd ${PLUGINCONFDIR}/fd-loop 1777
+ cp $CONFFILE ${PLUGINCONFDIR}/vmchooser.conf
+ ln -s ${PLUGINDIR}/run-virt.sh ${BINDIR}/run-virt.sh
+ ln -s ${PLUGINDIR}/vmchooser ${BINDIR}/vmchooser
+
+ # setup all generic virtualization / starting stuff like the floppy image
+ # loop file for exchanging information between linux and vm guest
+ if modprobe ${MODPRV} loop; then
+ mdev -s
+ else
+ : #|| error "" nonfatal
+ fi
+ # mount a clean tempfs (bug in UnionFS prevents loopmount to work)
+ grep -qE "unionfs |aufs " /proc/mounts && \
+ mount -n -o size=1500k -t tmpfs vm-loopimg ${PLUGINCONFDIR}/loopimg
+ # create an empty floppy image of 1.4MByte size
+ dd if=/dev/zero of=${PLUGINCONFDIR}/loopimg/fd.img count=2880 bs=512 \
+ 2>/dev/null
+ chmod 0777 ${PLUGINCONFDIR}/loopimg/fd.img
+ # use dos formatter copied into stage3
+ mkdosfs ${PLUGINCONFDIR}/loopimg/fd.img >/dev/null 2>&1 #|| error
+ mount -n -t msdos -o loop,umask=000 ${PLUGINCONFDIR}/loopimg/fd.img \
+ ${PLUGINCONFDIR}/fd-loop
+
+ # finished ...
+ [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmchooser' os-plugin ..."
+ fi
+fi
diff --git a/src/os-plugins/plugins/vmchooser/files/default.desktop b/src/os-plugins/plugins/vmchooser/files/default.desktop
new file mode 100644
index 00000000..91540228
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/default.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=virtual machine chooser (default)
+Name[de]=Virtuelle Maschine auswählen
+Comment=This session starts the vm session chooser
+Comment[de]=Diese Sitzung startet das Auswahlmenü für die vorhandenen Sitzungen
+Exec=/opt/openslx/plugin-repo/vmchooser/vmchooser
+TryExec=/opt/openslx/plugin-repo/vmchooser/vmchooser
+Icon=
+Type=Application
diff --git a/src/os-plugins/plugins/vmchooser/files/mesgdisp b/src/os-plugins/plugins/vmchooser/files/mesgdisp
new file mode 100755
index 00000000..41e3721c
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/mesgdisp
Binary files differ
diff --git a/src/os-plugins/plugins/vmchooser/files/mkdosfs b/src/os-plugins/plugins/vmchooser/files/mkdosfs
new file mode 120000
index 00000000..c3fa8102
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/mkdosfs
@@ -0,0 +1 @@
+busybox \ No newline at end of file
diff --git a/src/os-plugins/plugins/vmchooser/files/printer.sh b/src/os-plugins/plugins/vmchooser/files/printer.sh
new file mode 100755
index 00000000..8f1d5ffa
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/printer.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+#echo "<printer name=\"info\" path=\"//printserver/info\"> some pseudo printer </printer>"
+
+for(( i=0; $i<10; i=$i+1)); do
+ echo -e "printserver$i\tprinter$i\tPrinter Description $i"
+done
+
+echo -e "printserver.ruf.uni-freiburg.de\treal-printer-name\tSome really long printer Description"
+
diff --git a/src/os-plugins/plugins/vmchooser/files/run-virt.sh b/src/os-plugins/plugins/vmchooser/files/run-virt.sh
new file mode 100644
index 00000000..23f026c7
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/run-virt.sh
@@ -0,0 +1,402 @@
+#!/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
diff --git a/src/os-plugins/plugins/vmchooser/files/scanner.sh b/src/os-plugins/plugins/vmchooser/files/scanner.sh
new file mode 100755
index 00000000..dcb94c68
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/scanner.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+
+echo -e "scanserver\tscanner1hp\tThis is a test Scanner"
diff --git a/src/os-plugins/plugins/vmchooser/files/vm-template.xml b/src/os-plugins/plugins/vmchooser/files/vm-template.xml
new file mode 100755
index 00000000..f6b59fea
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/vm-template.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<settings>
+ <entry>
+ <!-- "vmware", "virtualbox", "qemu" -->
+ <virtualmachine param="vmware"/>
+ <!-- VM-name with ending .vmdk, .img, .vdi, .qcow2 -->
+ <image_name param="vm-image.vmdk"/>
+ <!-- sort after parameters then alphabet, values 0(top) - 9(bottom) -->
+ <priority param="5"/>
+ <!-- title shown in the menu -->
+ <title param="My VM Image"/>
+ <!-- description shown when image is chosen -->
+ <description>Image for lectures with a lot of software: office, ...
+ </description>
+ <!-- if active="true" the image is selectable via vmchooser -->
+ <active param="true"/>
+ <!-- in which environment this image will be selectable via vmchooser -->
+ <environment param="default"/>
+ <!-- image locked with a password? -->
+ <locked param="false"/>
+ <creator param="Your Name"/>
+ <email param="your@e-mail.add"/>
+ <phone param="0123-12345678"/>
+ <!-- when should this image be deactivated automatically -->
+ <valid_until param="DD-MM-YY"/>
+ <!-- type of the OS: if you do not know use "other" -->
+ <!-- vmware refer to: http://sanbarrow.com/vmx/vmx-guestos.html -->
+ <os param="winxppro"/>
+ <!-- "nat", "bridge", "hostonly" -->
+ <network param="nat"/>
+ <!-- use a different virtual network card than default -->
+ <netcard param="e1000"/>
+ <!-- activate serial port: "ttyS0", "auto" (recommended) -->
+ <serialport param="false"/>
+ <!-- activate parallel port: "parport0" (recommended) -->
+ <parport param="false"/>
+ <!-- enable 3D support -->
+ <enable3d param="true"/>
+ <!-- which shared folders should be connected -->
+ <shared_folders param="true">
+ <!-- name="Home" path="/home/$USER" for internal VMware sf -->
+ <shared_folder name="" path="" pass=""></shared_folder>
+ </shared_folders>
+ <!-- which printers should be connected -->
+ <printers>
+ <printer name="" path="">Human readable description</printer>
+ </printers>
+ <!-- which scanners should be connected -->
+ <scanners>
+ <scanner name="" path="">Description</scanner>
+ </scanners>
+ <!-- added automatically through vmchooser when started
+ <username param="user-id"/>
+ -->
+ <!-- obsolete, maybe for future implementations
+ <xdm param="false">
+ </xdm>
+ -->
+ </entry>
+</settings>
diff --git a/src/os-plugins/plugins/vmchooser/files/vmchooser b/src/os-plugins/plugins/vmchooser/files/vmchooser
new file mode 100644
index 00000000..fc12e0fe
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/vmchooser
Binary files differ
diff --git a/src/os-plugins/plugins/vmchooser/files/xmlfilter.sh b/src/os-plugins/plugins/vmchooser/files/xmlfilter.sh
new file mode 100755
index 00000000..5196992c
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/files/xmlfilter.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+# -----------------------------------------------------------------------------
+# Copyright (c) 2007..2009 - RZ Uni FR
+# Copyright (c) 2007..2009 - 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/
+# -----------------------------------------------------------------------------
+# xmlfilter.sh
+# - This script is invoked by the vmchooser tool. It simply filters xml-
+# files (taking the path to these files in $1). You might modify it in any
+# way to match your needs, e.g. ask some database instead. You can re-
+# implement it in any other programming language too. You simply have to
+# return a list of proper xml files to be interpreted by the vmchooser
+# binary). Please check for vmchooser.sh too ...
+# -----------------------------------------------------------------------------
+
+# This script .
+#
+# currently:
+# - filter for slxgrp (which comes from /etc/machine-setup)
+#
+
+# include default directories
+. /etc/opt/openslx/openslx.conf
+
+if [ -f ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf ]; then
+ . ${OPENSLX_DEFAULT_CONFDIR}/plugins/vmchooser/vmchooser.conf
+fi
+
+for FILE in $1/*.xml; do
+ # filter all xmls which aren't set active
+ if [ $(grep "<active param=.*true.*" ${FILE} | wc -l) -eq 1 ]; then
+ if [ -n ${vmchooser_env} ]; then
+ # filter all xmls with pool-param not equal to vmchooser::env
+ if [ $(grep "<pools param=\"${vmchooser_env}\"" ${FILE} | wc -l) -eq 1 ];\
+ then
+ echo ${FILE};
+ fi
+ else
+ # if there is no pool set, just take all available xmls
+ echo -e ${active}
+ fi
+ fi
+done
diff --git a/src/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh b/src/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh
new file mode 100644
index 00000000..7f1ae20d
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/init-hooks/40-started-hw-config/run-virt.sh
@@ -0,0 +1,21 @@
+# Copyright (c) 2009 - RZ Uni Freiburg
+# Copyright (c) 2009 - 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
+#
+# Stage3 part of 'vmchooser' plugin - this script detects additionally to the
+# the standard hardware configuration the availability of optical and floppy
+# drives for virtual machines.
+#
+# The script is included from init via the "." load function - thus it has all
+# variables and functions available.
+
+waitfor /tmp/hwcfg
+( hwinfo --cdrom | grep -i "Device File:" | awk {'print $3'} >/etc/hwinfo.cdrom ) &
+( hwinfo --floppy | grep -i "Device File:" | awk {'print $3'} >/etc/hwinfo.floppy ) &
diff --git a/src/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh b/src/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh
new file mode 100644
index 00000000..73a65ac5
--- /dev/null
+++ b/src/os-plugins/plugins/vmchooser/init-hooks/80-after-plugins/virtualization.sh
@@ -0,0 +1,144 @@
+# 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