summaryrefslogtreecommitdiffstats
path: root/os-plugins
diff options
context:
space:
mode:
authorDirk von Suchodoletz2008-03-16 14:19:43 +0100
committerDirk von Suchodoletz2008-03-16 14:19:43 +0100
commite98ebf38addd25dafa6aeab697243f26110829a6 (patch)
tree5877a90de5d309e02f847ac699c8103d7cae3b36 /os-plugins
parent* intermediate checking for new desktop plugin (successor of displaymanager (diff)
downloadcore-e98ebf38addd25dafa6aeab697243f26110829a6.tar.gz
core-e98ebf38addd25dafa6aeab697243f26110829a6.tar.xz
core-e98ebf38addd25dafa6aeab697243f26110829a6.zip
Changed to default indentation for vmware plugin files (two
spaces for shell scripts, four for perl). There are some discussions to needed, how to handle vmware setup and configuration (the default one by the software vendor is not really appropriate for the environment here ...) git-svn-id: http://svn.openslx.org/svn/openslx/openslx/trunk@1635 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'os-plugins')
-rw-r--r--os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm182
-rw-r--r--os-plugins/plugins/vmware/XX_vmware.sh290
2 files changed, 244 insertions, 228 deletions
diff --git a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm
index 7a9a57cb..28193dff 100644
--- a/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm
+++ b/os-plugins/plugins/vmware/OpenSLX/OSPlugin/vmware.pm
@@ -1,4 +1,4 @@
-# Copyright (c) 2007 - OpenSLX GmbH
+# Copyright (c) 2008 - OpenSLX GmbH
#
# This program is free software distributed under the GPL version 2.
# See http://openslx.org/COPYING
@@ -9,7 +9,7 @@
# General information about OpenSLX can be found at http://openslx.org/
# -----------------------------------------------------------------------------
# vmware.pm
-# - declares necessary information for the vmware plugin
+# - declares necessary information for the vmware plugin
# -----------------------------------------------------------------------------
package OpenSLX::OSPlugin::vmware;
@@ -25,112 +25,112 @@ use OpenSLX::Utils;
sub new
{
- my $class = shift;
+ my $class = shift;
- my $self = {
- name => 'vmware',
- };
+ my $self = {
+ name => 'vmware',
+ };
- return bless $self, $class;
+ return bless $self, $class;
}
sub getInfo
{
- my $self = shift;
-
- return {
- description => unshiftHereDoc(<<' End-of-Here'),
- !!! descriptive text missing here !!!
- End-of-Here
- mustRunAfter => [],
- };
+ my $self = shift;
+
+ return {
+ description => unshiftHereDoc(<<' End-of-Here'),
+ !!! descriptive text missing here !!!
+ End-of-Here
+ mustRunAfter => [],
+ };
}
sub getAttrInfo
-{ # returns a hash-ref with information about all attributes supported
- # by this specific plugin
- my $self = shift;
-
- # This default configuration will be added as attributes to the default
- # system, such that it can be overruled for any specific system by means
- # of slxconfig.
- return {
- # attribute 'active' is mandatory for all plugins
- 'vmware::active' => {
- applies_to_systems => 1,
- applies_to_clients => 0,
- description => unshiftHereDoc(<<' End-of-Here'),
- should the 'vmware'-plugin be executed during boot?
- End-of-Here
- content_regex => qr{^(0|1)$},
- content_descr => '1 means active - 0 means inactive',
- default => '1',
- },
- # attribute 'precedence' is mandatory for all plugins
- 'vmware::precedence' => {
- applies_to_systems => 1,
- applies_to_clients => 0,
- description => unshiftHereDoc(<<' End-of-Here'),
- the execution precedence of the 'vmware' plugin
- End-of-Here
- content_regex => qr{^\d\d$},
- content_descr => 'allowed range is from 01-99',
- default => '70',
- },
- # attribute 'imagesrc' defines where we can find vmware images
- 'vmware::imagessrc' => {
- applies_to_systems => 1,
- applies_to_clients => 1,
- description => unshiftHereDoc(<<' End-of-Here'),
- Where do we store our vmware images? NFS? Filesystem?
- End-of-Here
- content_descr => 'Allowed values: path or URI',
- default => '',
- },
- # attribute 'binaries' defines whether or not VMware binaries shall
- # be provided (by downloading them).
- 'vmware::binaries' => {
- applies_to_vendor_os => 1,
- applies_to_systems => 0,
- applies_to_clients => 0,
- description => unshiftHereDoc(<<' End-of-Here'),
- Shall VMware binaries be downloaded and installed?
- End-of-Here
- content_regex => qr{^(0|1)$},
- content_descr => 'Allowed values: 0 or 1',
- default => '1',
- },
-
- };
+{ # returns a hash-ref with information about all attributes supported
+ # by this specific plugin
+ my $self = shift;
+
+ # This default configuration will be added as attributes to the default
+ # system, such that it can be overruled for any specific system by means
+ # of slxconfig.
+ return {
+ # attribute 'active' is mandatory for all plugins
+ 'vmware::active' => {
+ applies_to_systems => 1,
+ applies_to_clients => 0,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ should the 'vmware'-plugin be executed during boot?
+ End-of-Here
+ content_regex => qr{^(0|1)$},
+ content_descr => '1 means active - 0 means inactive',
+ default => '1',
+ },
+ # attribute 'precedence' is mandatory for all plugins
+ 'vmware::precedence' => {
+ applies_to_systems => 1,
+ applies_to_clients => 0,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ the execution precedence of the 'vmware' plugin
+ End-of-Here
+ content_regex => qr{^\d\d$},
+ content_descr => 'allowed range is from 01-99',
+ default => '70',
+ },
+ # attribute 'imagesrc' defines where we can find vmware images
+ 'vmware::imagessrc' => {
+ applies_to_systems => 1,
+ applies_to_clients => 1,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ Where do we store our vmware images? NFS? Filesystem?
+ End-of-Here
+ content_descr => 'Allowed values: path or URI',
+ default => '',
+ },
+ # attribute 'binaries' defines whether or not VMware binaries shall
+ # be provided (by downloading them).
+ 'vmware::binaries' => {
+ applies_to_vendor_os => 1,
+ applies_to_systems => 0,
+ applies_to_clients => 0,
+ description => unshiftHereDoc(<<' End-of-Here'),
+ Shall VMware binaries be downloaded and installed?
+ End-of-Here
+ content_regex => qr{^(0|1)$},
+ content_descr => 'Allowed values: 0 or 1',
+ default => '1',
+ },
+
+ };
}
sub installationPhase
{
- my $self = shift;
- my $pluginRepositoryPath = shift;
- my $pluginTempPath = shift;
- my $openslxPath = shift;
-
- # get path of files we need to install
- my $pluginFilesPath = "$openslxPath/lib/plugins/$self->{'name'}/files";
-
- # copy all needed files now
- my @files = qw( dhcpd.conf nat.conf nvram.5.0 runvmware-v2 );
- foreach my $file (@files) {
- copyFile("$pluginFilesPath/$file", $pluginRepositoryPath);
- }
+ my $self = shift;
+ my $pluginRepositoryPath = shift;
+ my $pluginTempPath = shift;
+ my $openslxPath = shift;
+
+ # get path of files we need to install
+ my $pluginFilesPath = "$openslxPath/lib/plugins/$self->{'name'}/files";
+
+ # copy all needed files now
+ my @files = qw( dhcpd.conf nat.conf nvram.5.0 runvmware-v2 );
+ foreach my $file (@files) {
+ copyFile("$pluginFilesPath/$file", $pluginRepositoryPath);
+ }
}
sub removalPhase
{
- my $self = shift;
- my $pluginRepositoryPath = shift;
- my $pluginTempPath = shift;
- my $openslxPath = shift;
-
- rmtree ( [ $pluginRepositoryPath ] );
-
- return;
+ my $self = shift;
+ my $pluginRepositoryPath = shift;
+ my $pluginTempPath = shift;
+ my $openslxPath = shift;
+
+ rmtree ( [ $pluginRepositoryPath ] );
+
+ return;
}
1;
diff --git a/os-plugins/plugins/vmware/XX_vmware.sh b/os-plugins/plugins/vmware/XX_vmware.sh
index 8f632334..f0c75bfd 100644
--- a/os-plugins/plugins/vmware/XX_vmware.sh
+++ b/os-plugins/plugins/vmware/XX_vmware.sh
@@ -1,154 +1,170 @@
-#! /bin/sh
+#!/bin/ash
+#
+# Copyright (c) 2007, 2008 - RZ Uni Freiburg
+# Copyright (c) 2008 - 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
+#
-#TODO: nvram,functions
+# TODO: nvram,functions
+# check if we really need locations and config if we create our own
+# vmware start script ...
+# to be decided where: Stage1 or here in Stage3 -->
+# write /etc/vmware/locations, /etc/vmware/config, /etc/init.d/vmware
# check if the configuration file is available
if [ -e /initramfs/plugin-conf/vmware.conf ]; then
- # load needed variables
- . /initramfs/plugin-conf/vmware.conf
+ # load needed variables
+ . /initramfs/plugin-conf/vmware.conf
- # Test if this plugin is activated...
- # TODO: err... I think we could save this test due of a changed
- # plugin system
- if [ $vmware_active -ne 0 ]; then
+ # Test if this plugin is activated...
+ # TODO: err... I think we could save this test due of a changed
+ # plugin system
+ if [ $vmware_active -ne 0 ]; then
- [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'vmware' os-plugin ...";
-
- # Load general configuration
- . /initramfs/machine-setup
- # we need to load the function file for:
- # uri_token, testmkd
- . /etc/functions
- # D_INITDIR is defined in the following file:
- . /etc/sysconfig/config
-
- echo " * vmware part 1"
- #############################################################################
- # vmware stuff first part: two scenarios
- # * VM images in /usr/share/vmware - then simply link
- # * VM images via additional mount (mount source NFS, NBD, ...)
+ [ $DEBUGLEVEL -gt 0 ] && echo "executing the 'vmware' os-plugin ...";
+
+ # Load general configuration
+ . /initramfs/machine-setup
+ # we need to load the function file for:
+ # uri_token, testmkd
+ . /etc/functions
+ # D_INITDIR is defined in the following file:
+ . /etc/sysconfig/config
+
+ echo " * vmware part 1"
+ #############################################################################
+ # vmware stuff first part: two scenarios
+ # * VM images in /usr/share/vmware - then simply link
+ # * VM images via additional mount (mount source NFS, NBD, ...)
- # map slxgrp to pool, so it's better to understand
- pool=${slxgrp}
- # if we dont have slxgrp defined
- [ -z "${pool}" ] && pool="default"
+ # map slxgrp to pool, so it's better to understand
+ pool=${slxgrp}
+ # if we dont have slxgrp defined
+ [ -z "${pool}" ] && pool="default"
- # get source of vmware image server (get type, server and path)
- if strinstr "/" "${vmware_imagesrc}" ; then
- vmimgprot=$(uri_token ${vmware_imagesrc} prot)
- vmimgserv=$(uri_token ${vmware_imagesrc} server)
- vmimgpath="$(uri_token ${vmware_imagesrc} path)"
- fi
- if [ -n "${vmimgserv}" ] ; then
- testmkd /mnt/var/lib/vmware
- case "${vmimgprot}" in
- *nbd)
- ;;
- lbdev)
- # we expect the stuff on toplevel directory, filesystem type should be
- # autodetected here ... (vmimgserv is blockdev here)
- vmbdev=/dev/${vmimgserv}
- waitfor ${vmbdev} 20000
- echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems
- mount -o ro ${vmbdev} /mnt/var/lib/vmware || error "$scfg_evmlm" nonfatal
- ;;
- *)
- # we expect nfs mounts here ...
- for proto in tcp udp fail; do
- [ $proto = "fail" ] && { error "$scfg_nfs" nonfatal;
- noimg=yes; break;}
- mount -n -t nfs -o ro,nolock,$proto ${vmimgserv}:${vmimgpath} \
- /mnt/var/lib/vmware && break
- done
- ;;
- esac
- fi
-
- echo " * vmware part 2"
-
- #############################################################################
- # vmware stuff second part: setting up the environment
-
- # create needed directories and files
- for i in /etc/vmware/vmnet1/dhcpd /etc/vmware/vmnet8/nat \
- /etc/vmware/vmnet8/dhcpd /var/run/vmware /etc/vmware/loopimg \
- /etc/vmware/fd-loop /var/X11R6/bin /etc/X11/sessions; do
- testmkd /mnt/$i
- done
+ # get source of vmware image server (get type, server and path)
+ if strinstr "/" "${vmware_imagesrc}" ; then
+ vmimgprot=$(uri_token ${vmware_imagesrc} prot)
+ vmimgserv=$(uri_token ${vmware_imagesrc} server)
+ vmimgpath="$(uri_token ${vmware_imagesrc} path)"
+ fi
+ if [ -n "${vmimgserv}" ] ; then
+ testmkd /mnt/var/lib/vmware
+ case "${vmimgprot}" in
+ *nbd)
+ ;;
+ lbdev)
+ # we expect the stuff on toplevel directory, filesystem type should be
+ # autodetected here ... (vmimgserv is blockdev here)
+ vmbdev=/dev/${vmimgserv}
+ waitfor ${vmbdev} 20000
+ echo -e "ext2\nreiserfs\nvfat\nxfs" >/etc/filesystems
+ mount -o ro ${vmbdev} /mnt/var/lib/vmware || error "$scfg_evmlm" nonfatal
+ ;;
+ *)
+ # we expect nfs mounts here ...
+ for proto in tcp udp fail; do
+ [ $proto = "fail" ] && { error "$scfg_nfs" nonfatal;
+ noimg=yes; break;}
+ mount -n -t nfs -o ro,nolock,$proto ${vmimgserv}:${vmimgpath} \
+ /mnt/var/lib/vmware && break
+ done
+ ;;
+ esac
+ fi
+
+ echo " * vmware part 2"
+
+ #############################################################################
+ # vmware stuff second part: setting up the environment
+
+ # create needed directories and files
+ for i in /etc/vmware/vmnet1/dhcpd /etc/vmware/vmnet8/nat \
+ /etc/vmware/vmnet8/dhcpd /var/run/vmware /etc/vmware/loopimg \
+ /etc/vmware/fd-loop /var/X11R6/bin /etc/X11/sessions; do
+ testmkd /mnt/$i
+ done
- # create needed devices (not created automatically via module load)
- for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
- "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do
- mknod $i
- done
+ # create needed devices (not created automatically via module load)
+ for i in "/dev/vmnet0 c 119 0" "/dev/vmnet1 c 119 1" \
+ "/dev/vmnet8 c 119 8" "/dev/vmmon c 10 165"; do
+ mknod $i
+ done
- # create the vmware startup configuration file /etc/vmware/locations
- # fixme --> ToDo
- # echo -e "answer VNET_8_NAT yes\nanswer VNET_8_HOSTONLY_HOSTADDR \n\
- #192.168.100.1\nanswer VNET_8_HOSTONLY_NETMASK 255.255.255.0\n\
- #file /etc/vmware/vmnet8/dhcpd/dhcpd.conf\n\
- # remove_file /etc/vmware/not_configured" >/mnt/etc/vmware/locations
-
- chmod 0700 /dev/vmnet*
- chmod 1777 /mnt/etc/vmware/fd-loop
+ # create the vmware startup configuration file /etc/vmware/locations
+ # fixme --> ToDo
+ # echo -e "answer VNET_8_NAT yes\nanswer VNET_8_HOSTONLY_HOSTADDR \n\
+ #192.168.100.1\nanswer VNET_8_HOSTONLY_NETMASK 255.255.255.0\n\
+ #file /etc/vmware/vmnet8/dhcpd/dhcpd.conf\n\
+ # remove_file /etc/vmware/not_configured" >/mnt/etc/vmware/locations
+
+ chmod 0700 /dev/vmnet*
+ chmod 1777 /mnt/etc/vmware/fd-loop
- # loop file for exchanging information between linux and vmware guest
- if modprobe ${MODPRV} loop; then
- mdev -s
- else
- : #|| error "" nonfatal
- fi
- # mount a clean tempfs (bug in UnionFS prevents loopmount to work)
- strinfile "unionfs" /proc/mounts && \
- mount -n -o size=1500k -t tmpfs vm-loopimg /mnt/etc/vmware/loopimg
- # create an empty floppy image of 1.4MByte size
- dd if=/dev/zero of=/mnt/etc/vmware/loopimg/fd.img \
- count=2880 bs=512 2>/dev/null
- chmod 0777 /mnt/etc/vmware/loopimg/fd.img
- # use dos formatter from rootfs (later stage4)
- LD_LIBRARY_PATH=/mnt/lib /mnt/sbin/mkfs.msdos \
- /mnt/etc/vmware/loopimg/fd.img >/dev/null 2>&1 #|| error
- mount -n -t msdos -o loop,umask=000 /mnt/etc/vmware/loopimg/fd.img \
- /mnt/etc/vmware/fd-loop
- echo -e "usbfs\t\t/proc/bus/usb\tusbfs\t\tauto\t\t 0 0" >> /mnt/etc/fstab
- # needed for VMware 5.5.3 and versions below
- echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \
- >>/mnt/etc/${D_INITDIR}/boot.slx
+ # loop file for exchanging information between linux and vmware guest
+ if modprobe ${MODPRV} loop; then
+ mdev -s
+ else
+ : #|| error "" nonfatal
+ fi
+ # mount a clean tempfs (bug in UnionFS prevents loopmount to work)
+ strinfile "unionfs" /proc/mounts && \
+ mount -n -o size=1500k -t tmpfs vm-loopimg /mnt/etc/vmware/loopimg
+ # create an empty floppy image of 1.4MByte size
+ dd if=/dev/zero of=/mnt/etc/vmware/loopimg/fd.img \
+ count=2880 bs=512 2>/dev/null
+ chmod 0777 /mnt/etc/vmware/loopimg/fd.img
+ # use dos formatter from rootfs (later stage4)
+ LD_LIBRARY_PATH=/mnt/lib /mnt/sbin/mkfs.msdos \
+ /mnt/etc/vmware/loopimg/fd.img >/dev/null 2>&1 #|| error
+ mount -n -t msdos -o loop,umask=000 /mnt/etc/vmware/loopimg/fd.img \
+ /mnt/etc/vmware/fd-loop
+ echo -e "usbfs\t\t/proc/bus/usb\tusbfs\t\tauto\t\t 0 0" >> /mnt/etc/fstab
+ # needed for VMware 5.5.3 and versions below
+ echo -e "\tmount -t usbfs usbfs /proc/bus/usb 2>/dev/null" \
+ >>/mnt/etc/${D_INITDIR}/boot.slx
- # link /etc/init.d/vmware, so it starts uppon boot
- if [ -f /mnt/etc/${D_INITDIR}/vmware ] ; then
- rllinker "vmware" 20 2
- else
- error "df_errvmw" nonfatal
- fi
-
- chmod 1777 /mnt/var/run/vmware
- # define a variable where gdm/kdm should look for additional sessions
- # do we really need it? looks like we can delete it...
- # export vmsessions=/var/lib/vmware/vmsessions
-
- # we configured vmware, so we can delete the not_configured file
- rm /mnt/etc/vmware/not_configured 2>/dev/null
-
- # copy dhcpd.conf and nat for vmnet8 (nat)
- # fixme: It should be possible to start just one vmware dhcp which should
- # listen to both interfaces vmnet1 and vmnet8 ...
- cp /mnt/opt/openslx/plugin-repo/vmware/dhcpd.conf \
- /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null
- cp /mnt/opt/openslx/plugin-repo/vmware/nat.conf \
- /mnt/etc/vmware/vmnet8/nat 2>/dev/null
+ # link /etc/init.d/vmware, so it starts uppon boot
+ if [ -f /mnt/etc/${D_INITDIR}/vmware ] ; then
+ rllinker "vmware" 20 2
+ else
+ error "df_errvmw" nonfatal
+ fi
+
+ chmod 1777 /mnt/var/run/vmware
+ # define a variable where gdm/kdm should look for additional sessions
+ # do we really need it? looks like we can delete it...
+ # export vmsessions=/var/lib/vmware/vmsessions
+
+ # we configured vmware, so we can delete the not_configured file
+ rm /mnt/etc/vmware/not_configured 2>/dev/null
+
+ # copy dhcpd.conf and nat for vmnet8 (nat)
+ # fixme: It should be possible to start just one vmware dhcp which should
+ # listen to both interfaces vmnet1 and vmnet8 ...
+ cp /mnt/opt/openslx/plugin-repo/vmware/dhcpd.conf \
+ /mnt/etc/vmware/vmnet8/dhcpd 2>/dev/null
+ cp /mnt/opt/openslx/plugin-repo/vmware/nat.conf \
+ /mnt/etc/vmware/vmnet8/nat 2>/dev/null
- # TODO: perhaps we can a) kick out vmdir
- # b) configure vmdir by plugin configuration
- # TODO: How to start it. See Wiki. Currently a) implemnted
- # a) we get get information and start the programm with
- # /var/X11R6/bin/run-vmware.sh "$imagename" "$name_for_vmwindow" "$ostype_of_vm" "$kind_of_network"
- # b) we write a wrapper and get the xml-file as attribute
- cp /mnt/opt/openslx/plugin-repo/vmware/runvmware-v2 \
- /mnt/var/X11R6/bin/run-vmware.sh
+ # TODO: perhaps we can a) kick out vmdir
+ # b) configure vmdir by plugin configuration
+ # TODO: How to start it. See Wiki. Currently a) implemnted
+ # a) we get get information and start the programm with
+ # /var/X11R6/bin/run-vmware.sh "$imagename" "$name_for_vmwindow" "$ostype_of_vm" "$kind_of_network"
+ # b) we write a wrapper and get the xml-file as attribute
+ cp /mnt/opt/openslx/plugin-repo/vmware/runvmware-v2 \
+ /mnt/var/X11R6/bin/run-vmware.sh
- [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmware' os-plugin ...";
+ [ $DEBUGLEVEL -gt 0 ] && echo "done with 'vmware' os-plugin ...";
- fi
+ fi
fi