summaryrefslogtreecommitdiffstats
path: root/installer/OpenSLX/OSExport
diff options
context:
space:
mode:
authorSebastian Schmelzer2010-09-02 17:50:49 +0200
committerSebastian Schmelzer2010-09-02 17:50:49 +0200
commit416ab8a37f1b07dc9f6c0fb3ff1a8ff2036510b5 (patch)
tree4715f7d742fec50931017f38fe6ff0a89d4ceccc /installer/OpenSLX/OSExport
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 'installer/OpenSLX/OSExport')
-rw-r--r--installer/OpenSLX/OSExport/BlockDevice/AoE.pm95
-rw-r--r--installer/OpenSLX/OSExport/BlockDevice/Base.pm77
-rw-r--r--installer/OpenSLX/OSExport/BlockDevice/DNBD2.pm91
-rw-r--r--installer/OpenSLX/OSExport/BlockDevice/LBD.pm76
-rw-r--r--installer/OpenSLX/OSExport/BlockDevice/NBD.pm87
-rw-r--r--installer/OpenSLX/OSExport/Distro/Any.pm66
-rw-r--r--installer/OpenSLX/OSExport/Distro/Base.pm71
-rw-r--r--installer/OpenSLX/OSExport/Distro/Debian.pm60
-rw-r--r--installer/OpenSLX/OSExport/Distro/Fedora.pm65
-rw-r--r--installer/OpenSLX/OSExport/Distro/Gentoo.pm59
-rw-r--r--installer/OpenSLX/OSExport/Distro/SciLin.pm94
-rw-r--r--installer/OpenSLX/OSExport/Distro/Suse.pm145
-rw-r--r--installer/OpenSLX/OSExport/Distro/Ubuntu.pm108
-rw-r--r--installer/OpenSLX/OSExport/Engine.pm364
-rw-r--r--installer/OpenSLX/OSExport/FileSystem/Base.pm148
-rw-r--r--installer/OpenSLX/OSExport/FileSystem/NFS.pm238
-rw-r--r--installer/OpenSLX/OSExport/FileSystem/SquashFS.pm410
17 files changed, 0 insertions, 2254 deletions
diff --git a/installer/OpenSLX/OSExport/BlockDevice/AoE.pm b/installer/OpenSLX/OSExport/BlockDevice/AoE.pm
deleted file mode 100644
index cc7866b5..00000000
--- a/installer/OpenSLX/OSExport/BlockDevice/AoE.pm
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# AoE.pm
-# - provides ATA-over-Ethernet specific overrides of the
-# OpenSLX::OSExport::BlockDevice API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::BlockDevice::AoE;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::BlockDevice::Base);
-
-use File::Basename;
-use OpenSLX::Basics;
-use OpenSLX::ConfigDB qw(:support);
-use OpenSLX::OSExport::BlockDevice::Base 1;
-use OpenSLX::Utils;
-
-#
-#
-# N.B.: currently this is just a stub
-#
-#
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {'name' => 'aoe',};
- return bless $self, $class;
-}
-
-sub getExportPort
-{
- my $self = shift;
- my $openslxDB = shift;
-
- return $openslxDB->incrementGlobalCounter('next-nbd-server-port');
-}
-
-sub generateExportURI
-{
- my $self = shift;
- my $export = shift;
-
- my $serverIP = $export->{server_ip} || '';
- my $server
- = length($serverIP) ? $serverIP : generatePlaceholderFor('serverip');
- $server .= ":$export->{port}" if length($export->{port});
-
- return "aoe://$server";
-}
-
-sub requiredBlockDeviceModules
-{
- my $self = shift;
-
- return qw( aoe );
-}
-
-sub requiredBlockDeviceTools
-{
- my $self = shift;
-
- # TODO: is there any such tool?
-
- return;
-}
-
-sub showExportConfigInfo
-{
- my $self = shift;
- my $export = shift;
-
- print(('#' x 80) . "\n");
- print _tr(
- "Please make sure you start a corresponding aoe-server:\n\t%s\n",
- "... (don't know how this is done yet)"
- );
- print(('#' x 80) . "\n");
- return;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/BlockDevice/Base.pm b/installer/OpenSLX/OSExport/BlockDevice/Base.pm
deleted file mode 100644
index 6469c2f4..00000000
--- a/installer/OpenSLX/OSExport/BlockDevice/Base.pm
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# Base.pm
-# - provides empty base of the OpenSLX OSExport::BlockDevice API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::BlockDevice::Base;
-
-use strict;
-use warnings;
-
-our $VERSION = 1.01; # API-version . implementation-version
-
-use Scalar::Util qw( weaken );
-
-use OpenSLX::Basics;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- confess "Creating OpenSLX::OSExport::BlockDevice::Base-objects directly makes no sense!";
-}
-
-sub initialize
-{
- my $self = shift;
- my $engine = shift;
- my $fs = shift;
-
- $self->{'engine'} = $engine;
- weaken($self->{'engine'});
- # avoid circular reference between block-device and its engine
-
- $self->{'fs'} = $fs;
- weaken($self->{'fs'});
- # avoid circular reference between block-device and its file-system
-}
-
-sub getExportPort
-{
-}
-
-sub generateExportURI
-{
-}
-
-sub requiredBlockDeviceModules
-{
-}
-
-sub requiredBlockDeviceTools
-{
-}
-
-sub showExportConfigInfo
-{
-}
-
-1;
-################################################################################
-
-=pod
-
-=head1 NAME
-
-OpenSLX::OSExport::BlockDevice::Base - the base class for all OSExport::BlockDevices
-
-=cut
diff --git a/installer/OpenSLX/OSExport/BlockDevice/DNBD2.pm b/installer/OpenSLX/OSExport/BlockDevice/DNBD2.pm
deleted file mode 100644
index 25e112ee..00000000
--- a/installer/OpenSLX/OSExport/BlockDevice/DNBD2.pm
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (c) 2006, 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/
-# -----------------------------------------------------------------------------
-# DNBD2.pm
-# - provides DNBD2+Squashfs-specific overrides of the
-# OpenSLX::OSExport::BlockDevice API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::BlockDevice::DNBD2;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::BlockDevice::Base);
-
-use File::Basename;
-use OpenSLX::Basics;
-use OpenSLX::ConfigDB qw(:support);
-use OpenSLX::OSExport::BlockDevice::Base 1;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {'name' => 'dnbd2',};
- return bless $self, $class;
-}
-
-sub getExportPort
-{
- my $self = shift;
- my $openslxDB = shift;
-
- return $openslxDB->incrementGlobalCounter('next-nbd-server-port');
-}
-
-sub generateExportURI
-{
- my $self = shift;
- my $export = shift;
-
- my $serverIP = $export->{server_ip} || '';
- my $server
- = length($serverIP) ? $serverIP : generatePlaceholderFor('serverip');
- $server .= ":$export->{port}" if length($export->{port});
-
- return "dnbd2://$server";
-}
-
-sub requiredBlockDeviceModules
-{
- my $self = shift;
-
- return qw( dnbd2 );
-}
-
-sub requiredBlockDeviceTools
-{
- my $self = shift;
-
- return qw( );
-}
-
-sub showExportConfigInfo
-{
- my $self = shift;
- my $export = shift;
-
- print '#' x 80 , "\n",
- _tr(
- "Please make sure you start a corresponding dnbd2-server:\n\t%s\n",
- "dnbd2-server /etc/dnbd2/server.conf\n"
- ),
- "Create or modify a config file like /etc/dnbd2/server.conf, looking like:",
- "\n# dnbd2 server configuration\n<server>\n",
- "$export->{port}\n",
- "$self->{fs}->{'export-path'}\n\n",
- '#' x 80, "\n";
- return;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/BlockDevice/LBD.pm b/installer/OpenSLX/OSExport/BlockDevice/LBD.pm
deleted file mode 100644
index e8df1b04..00000000
--- a/installer/OpenSLX/OSExport/BlockDevice/LBD.pm
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (c) 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/
-# -----------------------------------------------------------------------------
-# LBD.pm
-# - provides the local block devices with Squashfs container specific
-# overrides of the OpenSLX::OSExport::BlockDevice API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::BlockDevice::LBD;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::BlockDevice::Base);
-
-use File::Basename;
-use OpenSLX::Basics;
-use OpenSLX::ConfigDB qw(:support);
-use OpenSLX::OSExport::BlockDevice::Base 1;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {'name' => 'LBD',};
- return bless $self, $class;
-}
-
-sub generateExportURI
-{
- my $self = shift;
-
- return "lbd://sda1/squashfs";
-}
-
-sub requiredBlockDeviceModules
-{
- my $self = shift;
-
- return qw( ehci_hcd usb_storage scsi_mod sd_mod loop ext3 );
-}
-
-sub requiredBlockDeviceTools
-{
- my $self = shift;
-
- return qw( );
-}
-
-sub showExportConfigInfo
-{
- my $self = shift;
- my $export = shift;
-
- print '#' x 80 , "\n",
- _tr(
- "Please make sure you copy all corresponding files to your boot\n",
- "device you wish to deploy (e.g. bootable USB stick)\n"
- ),
- "Make your device bootable using syslinux for (v)fat or extlinux for\n",
- "ext2/3 partitions. Cat HPA syslinux' mbr to the device very beginning\n",
- "and set the boot flag to the partion you made bootable\n\n",
- '#' x 80, "\n";
- return;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/BlockDevice/NBD.pm b/installer/OpenSLX/OSExport/BlockDevice/NBD.pm
deleted file mode 100644
index 58378751..00000000
--- a/installer/OpenSLX/OSExport/BlockDevice/NBD.pm
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# NBD.pm
-# - provides NBD+Squashfs-specific overrides of the
-# OpenSLX::OSExport::BlockDevice API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::BlockDevice::NBD;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::BlockDevice::Base);
-
-use File::Basename;
-use OpenSLX::Basics;
-use OpenSLX::ConfigDB qw(:support);
-use OpenSLX::OSExport::BlockDevice::Base 1;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {'name' => 'nbd',};
- return bless $self, $class;
-}
-
-sub getExportPort
-{
- my $self = shift;
- my $openslxDB = shift;
-
- return $openslxDB->incrementGlobalCounter('next-nbd-server-port');
-}
-
-sub generateExportURI
-{
- my $self = shift;
- my $export = shift;
-
- my $serverIP = $export->{server_ip} || '';
- my $server
- = length($serverIP) ? $serverIP : generatePlaceholderFor('serverip');
- $server .= ":$export->{port}" if length($export->{port});
-
- return "nbd://$server";
-}
-
-sub requiredBlockDeviceModules
-{
- my $self = shift;
-
- return qw( nbd );
-}
-
-sub requiredBlockDeviceTools
-{
- my $self = shift;
-
- return qw( nbd-client );
-}
-
-sub showExportConfigInfo
-{
- my $self = shift;
- my $export = shift;
-
- print(('#' x 80) . "\n");
- print _tr(
- "Please make sure you start a corresponding nbd-server:\n\t%s\n",
- "nbd-server $export->{port} $self->{fs}->{'export-path'} -r"
- );
- print(('#' x 80) . "\n");
- return;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/Distro/Any.pm b/installer/OpenSLX/OSExport/Distro/Any.pm
deleted file mode 100644
index dc3c7c8b..00000000
--- a/installer/OpenSLX/OSExport/Distro/Any.pm
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Any.pm
-# - provides generic overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Any;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'any',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- $self->{'export-filter'} = "
- + /var
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- - /var/lock/*
- - /var/log/*
- - /var/lib/xdm
- - /var/lib/smart
- - /var/cache/yum
- - /var/cache/man/*
- - /usr/share/vmware/*
- - /tmp/*
- - /sys/*
- - /proc/*
- - /mnt/*
- - /media/*
- + /lib/modules/*/misc/vmblock.o
- + /lib/modules/*/misc/vmnet.o
- + /lib/modules/*/misc/vmmon.o
- - /lib/klibc/events/*
- - /boot/initrd*
- - /boot/grub
- ";
- return;
-}
-
-1; \ No newline at end of file
diff --git a/installer/OpenSLX/OSExport/Distro/Base.pm b/installer/OpenSLX/OSExport/Distro/Base.pm
deleted file mode 100644
index 5223ce95..00000000
--- a/installer/OpenSLX/OSExport/Distro/Base.pm
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Base.pm
-# - provides base implementation of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Base;
-
-use strict;
-use warnings;
-
-our $VERSION = 1.01; # API-version . implementation-version
-
-use Scalar::Util qw( weaken );
-
-use OpenSLX::Basics;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- confess "Creating OpenSLX::OSExport::Distro::Base-objects directly makes no sense!";
-}
-
-sub initialize
-{
- my $self = shift;
- my $engine = shift;
-
- $self->{'engine'} = $engine;
- weaken($self->{'engine'});
- # avoid circular reference between distro and its engine
-
- $self->initDistroInfo();
- return;
-}
-
-sub initDistroInfo
-{
-}
-
-sub getSquashfsVersion
-{
- my $self = shift;
- my $distroVersion = shift;
-
- return "4.0";
-}
-
-1;
-################################################################################
-
-=pod
-
-=head1 NAME
-
-OpenSLX::OSExport::Distro::Base
-
-=head1 SYNOPSIS
-
-...
-
-=cut
diff --git a/installer/OpenSLX/OSExport/Distro/Debian.pm b/installer/OpenSLX/OSExport/Distro/Debian.pm
deleted file mode 100644
index 98e9b42f..00000000
--- a/installer/OpenSLX/OSExport/Distro/Debian.pm
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Debian.pm
-# - provides Debian-specific overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Debian;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'debian',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- $self->{'export-filter'} = "
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- - /var/log/*
- - /var/lib/xdm
- - /var/cache/man/*
- - /var/cache/apt/archives/*
- - /usr/share/vmware/*
- - /tmp/*
- - /sys/*
- - /proc/*
- - /mnt/*
- - /media/*
- - /lib/klibc/events/*
- - /boot/initrd*
- - /boot/grub
- ";
- return;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/Distro/Fedora.pm b/installer/OpenSLX/OSExport/Distro/Fedora.pm
deleted file mode 100644
index 4c196bd1..00000000
--- a/installer/OpenSLX/OSExport/Distro/Fedora.pm
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Fedora.pm
-# - provides Fedora-specific overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Fedora;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'fedora',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- # TODO: check and refine this!
- $self->{'export-filter'} = "
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- - /var/lock/*
- - /var/log/*
- - /var/lib/xdm
- - /var/lib/smart
- - /var/cache/yum
- - /var/cache/man/*
- - /usr/share/vmware/*
- - /tmp/*
- - /sys/*
- - /proc/*
- - /mnt/*
- - /media/*
- - /lib/klibc/events/*
- - /boot/initrd*
- - /boot/grub
- - *.rpmsave
- - *.rpmnew
- ";
- return;
-}
-
-1; \ No newline at end of file
diff --git a/installer/OpenSLX/OSExport/Distro/Gentoo.pm b/installer/OpenSLX/OSExport/Distro/Gentoo.pm
deleted file mode 100644
index 79fa2210..00000000
--- a/installer/OpenSLX/OSExport/Distro/Gentoo.pm
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Gentoo.pm
-# - provides Gentoo-specific overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Gentoo;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'gentoo',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- $self->{'export-filter'} = "
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- - /var/log/*
- - /var/lib/xdm
- - /var/lib/init.d/*
- - /var/cache/man/*
- - /usr/share/vmware/*
- - /tmp/*
- - /sys/*
- - /proc/*
- - /mnt/*
- - /media/*
- - /boot/initrd*
- - /boot/grub
- ";
- return;
-}
-
-1; \ No newline at end of file
diff --git a/installer/OpenSLX/OSExport/Distro/SciLin.pm b/installer/OpenSLX/OSExport/Distro/SciLin.pm
deleted file mode 100644
index 272b5cef..00000000
--- a/installer/OpenSLX/OSExport/Distro/SciLin.pm
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/SciLin.pm
-# - provides SciLin-specific overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::SciLin;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'scilin',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- $self->{'export-filter'} = "
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- - /var/mail
- - /var/log/*
- - /var/lock/*
- - /var/lib/xdm
- - /var/lib/vm*
- - /var/lib/suspend*
- - /var/lib/smart
- - /var/lib/gdm/*
- - /var/lib/dhcp*
- - /var/lib/bluetooth/
- - /var/cache/yum
- - /var/cache/man/*
- - /var/cache/zypp/*
- + /usr/lib/python*/*/*.o
- + /usr/lib/perl5/*/*/*/*.o
- + /usr/lib/gcc/*/*/*.o
- + /usr/lib/*.o
- + /usr/X11R6/lib/modules/drivers/*.o
- + /usr/X11R6/lib/modules/drivers/linux/*.o
- - /usr/bin/BackGround
- - /tmp/*
- - /sys/*
- - /proc/*
- - /opt/kde3/share/apps/kdm/read_sysconfig.sh
- - /opt/kde3/share/autostart/runupdater.desktop
- - /opt/kde3/share/autostart/profile_chooser-autostart.desktop
- - /opt/kde3/share/autostart/kinternet.desktop
- - /usr/share/gnome/autostart/gpk-update-icon*.desktop
- - /mnt/*
- - /media/*
- + /media
- + /lib/modules/*/misc/vmblock.o
- + /lib/modules/*/misc/vmnet.o
- + /lib/modules/*/misc/vmmon.o
- - /etc/*rpmnew
- - /etc/*rpmorig
- - /etc/*pptp*
- - /etc/*ppp*
- - /etc/dhcp*
- - /etc/cron.*/*
- - /etc/netplug*
- - /etc/sysconfig/network*
- - /etc/X11/xkb
- - /boot/initrd*
- - /boot/grub
- - *.rpmsave
- - *.rpmnew
- ";
- return;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/Distro/Suse.pm b/installer/OpenSLX/OSExport/Distro/Suse.pm
deleted file mode 100644
index 9e62e6e5..00000000
--- a/installer/OpenSLX/OSExport/Distro/Suse.pm
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Suse.pm
-# - provides SUSE-specific overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Suse;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'suse',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- $self->{'export-filter'} = "
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- + /var/run/screen
- - /var/mail
- - /var/log/*
- - /var/lock/*
- - /var/lib/zypp/*
- - /var/lib/zmd
- - /var/lib/xdm
- - /var/lib/vm*
- - /var/lib/suspend*
- - /var/lib/smart
- - /var/lib/sax
- - /var/lib/hardware/*
- - /var/lib/gdm/*
- - /var/lib/dhcp*
- - /var/lib/bluetooth/
- - /var/lib/YaST2/you/mnt/*
- - /var/lib/YaST2/backup_boot_sectors
- - /var/cache/sax
- - /var/cache/libx11/compose/*
- - /var/cache/beagle
- - /var/cache/yum
- - /var/cache/man/*
- - /var/cache/zypp/*
- - /var/adm/backup/rpmdb/*
- - /var/adm/mount/AP*
- - /var/adm/SuSEconfig
- - /usr/share/vmware/*
- - /usr/lib/zen-updater
- + /usr/lib/python*/*/*.o
- + /usr/lib/perl5/*/*/*/*.o
- + /usr/lib/gcc/*/*/*.o
- + /usr/lib/*.o
- + /usr/X11R6/lib/modules/drivers/*.o
- + /usr/X11R6/lib/modules/drivers/linux/*.o
- - /usr/bin/zen-*
- - /usr/bin/nw-manager
- - /usr/X11R6/bin/BackGround
- - /usr/bin/BackGround
- - /usr/share/autostart/SUSEgreeter.desktop
- - /tmp/*
- - /sys/*
- - /proc/*
- - /opt/kde3/share/apps/kdm/read_sysconfig.sh
- - */autostart/suseplugger.desktop
- - */autostart/susewatcher.desktop
- - */autostart/runupdater.desktop
- - */autostart/profile_chooser-autostart.desktop
- - */autostart/opensuseupdater.desktop
- - */autostart/knetworkmanager-autostart.desktop
- - */autostart/kerry.autostart.desktop
- - */autostart/kinternet.desktop
- - */autostart/SUSEgreeter.desktop
- - */autostart/zen-updater-auto.desktop
- - */autostart/beagle*.desktop
- - */autostart/gpk-update-icon*.desktop
- - */autostart/kupdateapplet.desktop
- - */config/SuSE/default/kupdateapplet.*
- - */config/SuSE/default/*.live
- - */config/SuSE/default/*beagle*
- - /mnt/*
- - /media/*
- + /media
- + /lib/modules/*/misc/vmblock.o
- + /lib/modules/*/misc/vmnet.o
- + /lib/modules/*/misc/vmmon.o
- - /etc/*rpmnew
- - /etc/*rpmorig
- - /etc/*YaST2save
- - /etc/*pptp*
- - /etc/*ppp*
- - /etc/dhcp*
- - /etc/cron.*/*
- - /etc/sysconfig/network/ifcfg-*
- - /etc/X11/xdm/SuSEconfig.xdm
- - /boot/initrd*
- - /boot/grub
- - *.rpmsave
- - *.rpmnew
- - *.YaST2save
- ";
- return;
-}
-
-
-sub getSquashfsVersion
-{
- my $self = shift;
- my $distroVersion = shift;
-
- my %versionMap = (
- '11.0' => '3.2',
- '11.1' => '3.2',
- '11.2' => '3.3',
- '11.3' => '4.0'
- );
-
- my $distroDefault = '4.0';
-
- return $versionMap{$distroVersion} || $distroDefault;
-}
-
-
-1;
diff --git a/installer/OpenSLX/OSExport/Distro/Ubuntu.pm b/installer/OpenSLX/OSExport/Distro/Ubuntu.pm
deleted file mode 100644
index 3826f019..00000000
--- a/installer/OpenSLX/OSExport/Distro/Ubuntu.pm
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# OSExport/Distro/Ubuntu.pm
-# - provides Ubuntu-specific overrides of the OSExport Distro API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Distro::Ubuntu;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::Distro::Base);
-
-use OpenSLX::Basics;
-
-################################################################################
-### implementation
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'base-name' => 'ubuntu',
- };
- return bless $self, $class;
-}
-
-sub initDistroInfo
-{
- my $self = shift;
-
- $self->{'export-filter'} = "
- - /var/tmp/*
- - /var/spool/*
- - /var/run/*
- + /var/run/screen
- - /var/log/*
- - /var/log/apt/*
- + /var/log/apt
- - /var/lib/*dm/*
- - /var/lib/libnss-ldap/*
- - /var/cache/apt/archives/*
- + /var/cache/apt/archives/partial
- - /var/cache/man/*
- - /var/cache/nscd/*
- - /usr/share/vmware/*
- - /usr/share/autostart/trackerd.desktop
- - /usr/share/autostart/knetworkmanager.desktop
- - /etc/update-motd.d/90*
- - /etc/update-motd.d/91*
- - /etc/update-motd.d/98*
- - /tmp/*
- - /sys/*
- - /proc/*
- - /mnt/*
- - /media/*
- - /lib/udev/devices
- - /initrd*
- - /etc/cron.*/*
- - /boot/initrd*
- - /boot/grub
- - /etc/xdg/compiz
- - /etc/xdg/autostart/adept_notifier_auto.desktop
- - /etc/xdg/autostart/evolution*alarm*notify*
- - /etc/xdg/autostart/knetworkmanager*
- - /etc/xdg/autostart/nm-applet.desktop
- - /etc/xdg/autostart/system-config-printer-applet-kde.desktop
- - /etc/xdg/autostart/tracker*
- - /etc/xdg/autostart/jockey-*
- - /etc/xdg/autostart/ica*
- - /etc/xdg/autostart/hplip*
- - /etc/xdg/autostart/redhat*
- - /etc/xdg/autostart/gnome-power-manager*
- - /etc/xdg/autostart/update*
- - /etc/xdg/update-notifier.desktop
- - /etc/xdg/user-dirs-update-gtk.desktop
- ";
- return;
-}
-
-
-sub getSquashfsVersion
-{
- my $self = shift;
- my $distroVersion = shift;
-
- my %versionMap = (
- '8.04' => '3.3',
- '8.10' => '3.3',
- '9.04' => '3.3',
- '9.10' => '4.0',
- '10.04' => '4.0'
- );
-
- my $distroDefault = '4.0';
-
- return $versionMap{$distroVersion} || $distroDefault;
-}
-
-
-1;
diff --git a/installer/OpenSLX/OSExport/Engine.pm b/installer/OpenSLX/OSExport/Engine.pm
deleted file mode 100644
index 251869e0..00000000
--- a/installer/OpenSLX/OSExport/Engine.pm
+++ /dev/null
@@ -1,364 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# Engine.pm
-# - provides driver engine for the OSExport API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::Engine;
-
-use strict;
-use warnings;
-
-our (@ISA, @EXPORT, $VERSION);
-$VERSION = 1.01; # API-version . implementation-version
-
-use Exporter;
-@ISA = qw(Exporter);
-
-@EXPORT = qw(
- %supportedExportFileSystems %supportedExportBlockDevices
- @supportedExportTypes
-);
-
-use File::Basename;
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-our (
- %supportedExportFileSystems, %supportedExportBlockDevices,
- @supportedExportTypes,
-);
-
-%supportedExportFileSystems = (
- 'nfs' => 'NFS',
- 'sqfs' => 'SquashFS',
-);
-
-%supportedExportBlockDevices = (
- 'dnbd2' => 'DNBD2',
- 'nbd' => 'NBD',
- 'aoe' => 'AoE',
-);
-
-@supportedExportTypes = (
- 'nfs',
- 'sqfs-aoe',
- 'sqfs-dnbd2',
- 'sqfs-nbd',
-);
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
-
- my $self = {};
-
- return bless $self, $class;
-}
-
-sub initializeFromExisting
-{
- my $self = shift;
- my $exportName = shift;
-
- my $openslxDB = instantiateClass("OpenSLX::ConfigDB");
- $openslxDB->connect();
-
- my $export = $openslxDB->fetchExportByFilter({'name' => $exportName});
- if (!defined $export) {
- die _tr("Export '%s' not found in DB, giving up!", $exportName);
- }
- my $vendorOS =
- $openslxDB->fetchVendorOSByFilter({'id' => $export->{vendor_os_id}});
-
- $openslxDB->disconnect();
-
- $self->_initialize($vendorOS->{name}, $vendorOS->{id}, $export->{name},
- $export->{type});
- return;
-}
-
-sub initializeForNew
-{
- my $self = shift;
- my $vendorOSName = shift;
- my $exportType = lc(shift);
-
- my $openslxDB = instantiateClass("OpenSLX::ConfigDB");
- $openslxDB->connect();
-
- my $vendorOS = $openslxDB->fetchVendorOSByFilter({'name' => $vendorOSName});
- if (!defined $vendorOS) {
- die _tr("vendor-OS '%s' not found in DB, giving up!", $vendorOSName);
- }
-
- my $exportName = "${vendorOSName}::${exportType}";
-
- $openslxDB->disconnect();
-
- $self->_initialize($vendorOS->{name}, $vendorOS->{id}, $exportName,
- $exportType);
- return;
-}
-
-sub exportVendorOS
-{
- my $self = shift;
-
- vlog(
- 1,
- _tr(
- "vendor-OS from '%s' will be exported to '%s'",
- $self->{'vendor-os-path'},
- $self->{'exporter'}->{'export-path'}
- )
- );
- if (!$self->{'exporter'}->checkRequirements($self->{'vendor-os-path'})) {
- die _tr(
- "clients wouldn't be able to access the exported root-fs!\nplease "
- . "install the missing module(s) or use another export-type.");
- }
-
- $self->{'exporter'}->exportVendorOS($self->{'vendor-os-path'},);
- vlog(
- 0,
- _tr(
- "vendor-OS '%s' successfully exported to '%s'!",
- $self->{'vendor-os-path'},
- $self->{exporter}->{'export-path'}
- )
- );
- $self->_addExportToConfigDB();
- return;
-}
-
-sub purgeExport
-{
- my $self = shift;
-
- if ($self->{'exporter'}->purgeExport()) {
- vlog(
- 0,
- _tr(
- "export '%s' successfully removed!",
- $self->{exporter}->{'export-path'}
- )
- );
- }
- $self->_removeExportFromConfigDB();
- return;
-}
-
-sub generateExportURI
-{
- my $self = shift;
-
- return $self->{exporter}->generateExportURI(@_);
-}
-
-sub requiredFSMods
-{
- my $self = shift;
-
- return $self->{exporter}->requiredFSMods();
-}
-
-sub requiredFSTools
-{
- my $self = shift;
-
- return $self->{exporter}->requiredFSTools();
-}
-
-################################################################################
-### implementation methods
-################################################################################
-sub _initialize
-{
- my $self = shift;
- my $vendorOSName = shift;
- my $vendorOSId = shift;
- my $exportName = shift;
- my $exportType = lc(shift);
-
- if ($vendorOSName eq '<<<default>>>') {
- die _tr("you can't do that with the default vendor-OS!\n");
- }
- if (!grep { $_ eq $exportType } @supportedExportTypes) {
- vlog(0,
- _tr("Sorry, export type '%s' is unsupported.\n", $exportType)
- . _tr("List of supported export types:\n\t")
- . join("\n\t", sort @supportedExportTypes));
- exit 1;
- }
- $exportType =~ m[^(\w+)(?:-(\w+))?$];
- my $exportFS = lc($1);
- my $exportBD = lc($2);
- vlog(2, "export-filesys='$exportFS' export-blockdev='$exportBD'");
-
- $self->{'vendor-os-name'} = $vendorOSName;
- $self->{'vendor-os-id'} = $vendorOSId;
- $self->{'export-name'} = $exportName;
- $self->{'export-type'} = $exportType;
- $vendorOSName =~ m[^(.+?\-[^-]+)];
- $self->{'distro-name'} = lc($1);
- my $distroName = ucfirst(lc($1));
-
- # load module for the requested distro:
- my $distro = loadDistroModule({
- distroName => $distroName,
- distroScope => 'OpenSLX::OSExport::Distro',
- fallbackName => 'Any',
- });
- if (!$distro) {
- die _tr(
- 'unable to load any OSExport::Distro module for vendor-OS %s!',
- $vendorOSName
- );
- }
- $distro->initialize($self);
- $self->{distro} = $distro;
-
- # load module for the requested export type:
- my $fsModuleName = $supportedExportFileSystems{$exportFS};
- my $exporter =
- instantiateClass("OpenSLX::OSExport::FileSystem::$fsModuleName");
- if (length($exportBD)) {
- my $blockModuleName = $supportedExportBlockDevices{$exportBD};
- my $blockDevice =
- instantiateClass("OpenSLX::OSExport::BlockDevice::$blockModuleName");
- $blockDevice->initialize($self, $exporter);
- $exporter->initialize($self, $blockDevice);
- } else {
- $exporter->initialize($self);
- }
- $self->{'exporter'} = $exporter;
-
- $self->{'vendor-os-path'} =
- "$openslxConfig{'private-path'}/stage1/$vendorOSName";
-
- return;
-}
-
-sub _addExportToConfigDB
-{
- my $self = shift;
-
- my $openslxDB = instantiateClass("OpenSLX::ConfigDB");
- $openslxDB->connect();
-
- my $export = $openslxDB->fetchExportByFilter(
- {
- 'name' => $self->{'export-name'},
- 'vendor_os_id' => $self->{'vendor-os-id'},
- }
- );
- if (defined $export) {
- vlog(
- 0,
- _tr(
- "No need to change export '%s' in OpenSLX-database.\n",
- $self->{'export-name'}
- )
- );
- $self->{exporter}->showExportConfigInfo($export);
- } else {
- $export = {
- 'vendor_os_id' => $self->{'vendor-os-id'},
- 'name' => $self->{'export-name'},
- 'type' => $self->{'export-type'},
- };
-
- my $id = $self->{exporter}->addExportToConfigDB($export, $openslxDB);
- vlog(
- 0,
- _tr(
- "Export '%s' has been added to DB (ID=%s)...\n",
- $self->{'export-name'}, $id
- )
- );
-
- $self->{exporter}->showExportConfigInfo($export) if $id;
- }
-
- my $system = $openslxDB->fetchSystemByFilter({
- 'name' => $self->{'export-name'},
- });
- if (!defined $system) {
- # now create a default system for that export, using the standard kernel:
- system("slxconfig add-system $self->{'export-name'}");
- }
-
- $openslxDB->disconnect();
- return;
-}
-
-sub _removeExportFromConfigDB
-{
- my $self = shift;
-
- my $openslxDB = instantiateClass("OpenSLX::ConfigDB");
- $openslxDB->connect();
-
- # remove export from DB:
- my $exportName = $self->{'export-name'};
- my $export = $openslxDB->fetchExportByFilter({'name' => $exportName,});
- if (!defined $export) {
- vlog(
- 0,
- _tr(
- "Export '%s' doesn't exist in OpenSLX-database.\n", $exportName
- )
- );
- } else {
- # remove all systems using this export and then remove the
- # export itself:
- my @systemIDs =
- map { $_->{id} }
- $openslxDB->fetchSystemByFilter({'export_id' => $export->{id}}, 'id');
- vlog(
- 1,
- _tr(
- "removing systems '%s' from DB, since they belong to the export"
- . " being deleted.\n",
- join ',',
- @systemIDs
- )
- );
- $openslxDB->removeSystem(\@systemIDs);
- $openslxDB->removeExport($export->{id});
- vlog(0, _tr("Export '%s' has been removed from DB.\n", $exportName));
- }
-
- $openslxDB->disconnect();
- return;
-}
-
-1;
-################################################################################
-
-=pod
-
-=head1 NAME
-
-OpenSLX::OSExport::Engine -
-
-=head1 SYNOPSIS
-
-=head1 DESCRIPTION
-
-...
-
-=cut
-
diff --git a/installer/OpenSLX/OSExport/FileSystem/Base.pm b/installer/OpenSLX/OSExport/FileSystem/Base.pm
deleted file mode 100644
index 05f3c6a0..00000000
--- a/installer/OpenSLX/OSExport/FileSystem/Base.pm
+++ /dev/null
@@ -1,148 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# Base.pm
-# - provides empty base of the OpenSLX OSExport::FileSystem API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::FileSystem::Base;
-
-use strict;
-use warnings;
-
-our $VERSION = 1.01; # API-version . implementation-version
-
-use File::Basename;
-use Scalar::Util qw( weaken );
-
-use OpenSLX::Basics;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- confess "Creating OpenSLX::OSExport::FileSystem::Base-objects directly makes no sense!";
-}
-
-sub initialize
-{
- my $self = shift;
- my $engine = shift;
-
- $self->{'engine'} = $engine;
- weaken($self->{'engine'});
- # avoid circular reference between file-system and its engine
-}
-
-sub exportVendorOS
-{
-}
-
-sub purgeExport
-{
-}
-
-sub checkRequirements
-{
- return 1;
-}
-
-sub addExportToConfigDB
-{
- my $self = shift;
- my $export = shift;
- my $openslxDB = shift;
-
- return $openslxDB->addExport($export);
-}
-
-sub generateExportURI
-{
-}
-
-sub requiredFSMods
-{
-}
-
-sub requiredFSTools
-{
-}
-
-sub showExportConfigInfo
-{
-}
-
-################################################################################
-### implementation methods
-################################################################################
-sub _pickKernelVersion
-{
- my $self = shift;
- my $vendorOSPath = shift;
-
- my $kernel = followLink("$vendorOSPath/boot/vmlinuz");
- if (!-e $kernel) {
- # 'vmlinuz'-link doesn't exist, so we have to pick the kernel manually
- my $osSetupEngine = instantiateClass("OpenSLX::OSSetup::Engine");
- $osSetupEngine->initialize($self->{engine}->{'vendor-os-name'}, 'none');
- $kernel = $osSetupEngine->pickKernelFile("$vendorOSPath/boot");
- }
- my $kernelName = basename($kernel);
- if ($kernelName !~ m[-(.+)$]) {
- die _tr("unable to determine version of kernel '%s'!", $kernelName);
- }
- return $1;
-}
-
-sub _locateKernelModule
-{
- my $self = shift;
- my $vendorOSPath = shift;
- my $moduleName = shift;
- my $defaultPaths = shift;
-
- vlog(1, _tr("locating kernel-module '%s'", $moduleName));
- # check default paths first:
- foreach my $defPath (@$defaultPaths) {
- vlog(2, "trying $defPath/$moduleName");
- my $target = followLink("$defPath/$moduleName", $vendorOSPath);
- return $target unless !-e $target;
- }
- # use brute force to search for the newest incarnation of the module:
- use File::Find;
- my $location;
- my $locationAge = 9999999;
- vlog(2, "searching in $vendorOSPath/lib/modules");
- find sub {
- return unless $_ eq $moduleName;
- if (-M _ < $locationAge) {
- $locationAge = -M _;
- $location = $File::Find::name;
- vlog(2, "located at $location (age=$locationAge days)");
- }
- }, "$vendorOSPath/lib/modules";
- if (defined $location) {
- return followLink($location, $vendorOSPath);
- }
- return;
-}
-
-1;
-
-################################################################################
-
-=pod
-
-=head1 NAME
-
-OpenSLX::OSExport::FileSystem::Base - the base class for all OSExport::FileSystems
-
-=cut
diff --git a/installer/OpenSLX/OSExport/FileSystem/NFS.pm b/installer/OpenSLX/OSExport/FileSystem/NFS.pm
deleted file mode 100644
index 9bd2ca87..00000000
--- a/installer/OpenSLX/OSExport/FileSystem/NFS.pm
+++ /dev/null
@@ -1,238 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# NFS.pm
-# - provides NFS-specific overrides of the OpenSLX::OSExport::FileSystem API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::FileSystem::NFS;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::FileSystem::Base);
-
-use File::Basename;
-use OpenSLX::Basics;
-use OpenSLX::ConfigDB qw(:support);
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {
- 'name' => 'nfs',
- };
- return bless $self, $class;
-}
-
-sub initialize
-{
- my $self = shift;
- my $engine = shift;
-
- $self->SUPER::initialize($engine);
-
- my $exportBasePath = "$openslxConfig{'public-path'}/export";
- $self->{'export-path'} = "$exportBasePath/nfs/$engine->{'vendor-os-name'}";
- return;
-}
-
-sub exportVendorOS
-{
- my $self = shift;
- my $source = shift;
-
- my $target = $self->{'export-path'};
- if ($self->_isTargetBindMounted($source, $target)) {
- warn _tr(
- "%s is a bind-mount to vendor-OS root - rsync step is skipped!",
- $target
- );
- return;
- }
-
- $self->_copyViaRsync($source, $target);
-
- return;
-}
-
-sub purgeExport
-{
- my $self = shift;
-
- my $source = $self->{'engine'}->{'vendor-os-path'};
- my $target = $self->{'export-path'};
- if ($self->_isTargetBindMounted($source, $target)) {
- warn _tr(
- "%s is a bind-mount to vendor-OS root - removal step is skipped!",
- $target
- );
- return;
- }
-
- if (system("rm -r $target")) {
- vlog(0, _tr("unable to remove export '%s'!", $target));
- return 0;
- }
- return 1;
-}
-
-sub checkRequirements
-{
- my $self = shift;
- my $vendorOSPath = shift;
-
- # determine most appropriate kernel version ...
- my $kernelVer = $self->_pickKernelVersion($vendorOSPath);
-
- # ... and check if that kernel-version provides all the required modules
- my $nfsMod = $self->_locateKernelModule(
- $vendorOSPath,
- 'nfs.ko',
- [
- "$vendorOSPath/lib/modules/$kernelVer/kernel/fs/nfs",
- "$vendorOSPath/lib/modules/$kernelVer/kernel/fs"
- ]
- );
- if (!defined $nfsMod) {
- warn _tr("unable to find nfs-module for kernel version '%s'.",
- $kernelVer);
- return;
- }
- return 1;
-}
-
-sub generateExportURI
-{
- my $self = shift;
- my $export = shift;
- my $vendorOS = shift;
-
- my $serverIP = $export->{server_ip} || '';
- my $server
- = length($serverIP) ? $serverIP : generatePlaceholderFor('serverip');
- my $port = $export->{port} || '';
- $server .= ":$port" if length($port);
-
- my $exportPath = "$openslxConfig{'public-path'}/export";
- return "nfs://$server$exportPath/nfs/$vendorOS->{name}";
-}
-
-sub requiredFSMods
-{
- my $self = shift;
-
- return qw( nfs );
-}
-
-sub showExportConfigInfo
-{
- my $self = shift;
- my $export = shift;
-
- print (('#' x 80)."\n");
- print _tr("Please make sure the following line is contained in /etc/exports\nin order to activate the NFS-export of this vendor-OS:\n\t%s\n",
- "$self->{'export-path'}\t*(ro,no_root_squash,async,no_subtree_check)");
- print (('#' x 80)."\n");
-
-# TODO : add something a bit more clever here...
-# my $exports = slurpFile("/etc/exports");
- return;
-}
-
-################################################################################
-### implementation methods
-################################################################################
-sub _copyViaRsync
-{
- my $self = shift;
- my $source = shift;
- my $target = shift;
-
- if (system("mkdir -p $target")) {
- die _tr("unable to create directory '%s', giving up! (%s)\n",
- $target, $!);
- }
- my $includeExcludeList = $self->_determineIncludeExcludeList();
- vlog(1, _tr("using include-exclude-filter:\n%s\n", $includeExcludeList));
- my $rsyncFH;
- my $additionalRsyncOptions = $ENV{SLX_RSYNC_OPTIONS} || '';
- my $rsyncCmd
- = "rsync -av --delete-excluded --exclude-from=- $additionalRsyncOptions"
- . " $source/ $target";
- vlog(2, "executing: $rsyncCmd\n");
- open($rsyncFH, '|-', $rsyncCmd)
- or die _tr("unable to start rsync for source '%s', giving up! (%s)",
- $source, $!);
- print $rsyncFH $includeExcludeList;
- close($rsyncFH)
- or die _tr("unable to export to target '%s', giving up! (%s)",
- $target, $!);
- return;
-}
-
-sub _determineIncludeExcludeList
-{
- my $self = shift;
-
- # Rsync uses a first match strategy, so we mix the local specifications
- # in front of the filterset given by the package (as the local filters
- # should always overrule the vendor filters):
- my $distroName = $self->{engine}->{'distro-name'};
- my $localFilterFile
- = "$openslxConfig{'config-path'}/distro-info/$distroName/export-filter";
- my $includeExcludeList
- = slurpFile($localFilterFile, { failIfMissing => 0 });
- $includeExcludeList .= $self->{engine}->{distro}->{'export-filter'};
- $includeExcludeList =~ s[^\s+][]igms;
- # remove any leading whitespace, as rsync doesn't like it
- return $includeExcludeList;
-}
-
-sub _isTargetBindMounted
-{
- my $self = shift;
- my $source = shift;
- my $target = shift;
-
- # For development purposes, it is very desirable to be able to take a
- # shortcut that avoids doing the actual copying of the folders (as that
- # takes a considerable amount of time).
- # In order to support this, we explicitly check if the OpenSLX NFS export
- # root folder (/srv/openslx/export/nfs) is a bind-mount of the OpenSLX
- # stage1 folder (/var/opt/openslx/stage1).
- # If that is the case, we print a notice and skip the rsync step (which
- # wouldn't work anyway, as source and target folder are the same).
- my $stage1Root = dirname($source);
- my $nfsRoot = dirname($target);
- chomp(my $canonicalStage1Root = qx{readlink -f $stage1Root} || $stage1Root);
- chomp(my $canonicalNFSRoot = qx{readlink -f $nfsRoot} || $nfsRoot);
- my @mounts = slurpFile('/etc/mtab');
- for my $mount (@mounts) {
- if ($mount =~ m{
- ^
- $canonicalStage1Root # mount source
- \s+
- $canonicalNFSRoot # mount target
- \s+
- none # filesystem for bind mounts is 'none'
- \s+
- \S*\bbind\b\S* # look for bind mounts only
- }gmsx) {
- return 1;
- }
- }
- return 0;
-}
-
-1;
diff --git a/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm b/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm
deleted file mode 100644
index 77034c9c..00000000
--- a/installer/OpenSLX/OSExport/FileSystem/SquashFS.pm
+++ /dev/null
@@ -1,410 +0,0 @@
-# Copyright (c) 2006, 2007 - 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/
-# -----------------------------------------------------------------------------
-# SquashFS.pm
-# - provides SquashFS-specific overrides of the OpenSLX::OSExport::ExportType
-# API.
-# -----------------------------------------------------------------------------
-package OpenSLX::OSExport::FileSystem::SquashFS;
-
-use strict;
-use warnings;
-
-use base qw(OpenSLX::OSExport::FileSystem::Base);
-
-use File::Basename;
-use OpenSLX::Basics;
-use OpenSLX::ConfigDB qw(:support);
-use OpenSLX::OSExport::FileSystem::Base 1;
-use OpenSLX::Utils;
-
-################################################################################
-### interface methods
-################################################################################
-sub new
-{
- my $class = shift;
- my $self = {'name' => 'sqfs',};
- return bless $self, $class;
-}
-
-sub initialize
-{
- my $self = shift;
- my $engine = shift;
- my $blockDevice = shift || confess('need to pass in block-device!');
-
- $self->SUPER::initialize($engine);
-
- $self->{'block-device'} = $blockDevice;
- my $exportBasePath = "$openslxConfig{'public-path'}/export";
- $self->{'export-path'} = "$exportBasePath/sqfs/$engine->{'vendor-os-name'}";
- return;
-}
-
-sub exportVendorOS
-{
- my $self = shift;
- my $source = shift;
-
- my $includeExcludeList = $self->_determineIncludeExcludeList();
- # in order to do the filtering as part of mksquashfs, we need to map
- # our internal (rsync-)filter format to regexes:
- $includeExcludeList =
- $self->_mapRsyncFilter2Regex($source, $includeExcludeList);
- vlog(1, _tr("using include-exclude-filter:\n%s\n", $includeExcludeList));
- my $target = $self->{'export-path'};
-
- my $sourceTime = (stat($source))[9] || 0;
- my $targetTime = (stat($target))[9] || 0;
- vlog(2, "source-time=$sourceTime target-time=$targetTime");
-
- if ($targetTime && $sourceTime < $targetTime) {
- vlog(
- 0,
- "!!! creation of squashfs skipped, as vendor-OS hasn't changed since last export!\n"
- . "!!! Use 'touch $source' to force an export."
- );
- } else {
- $self->_createSquashFS($source, $target, $includeExcludeList);
- }
- $self->_addBlockDeviceTagToExport($target);
- return;
-}
-
-sub purgeExport
-{
- my $self = shift;
-
- my $target = $self->{'export-path'};
- if ($self->_removeBlockDeviceTagFromExport($target)) {
- # no more tags, we can remove the image:
- if (slxsystem("rm $target")) {
- vlog(0, _tr("unable to remove export '%s'!", $target));
- return 0;
- }
- }
- return 1;
-}
-
-sub checkRequirements
-{
- my $self = shift;
- my $vendorOSPath = shift;
-
- # determine most appropriate kernel version ...
- my $kernelVer = $self->_pickKernelVersion($vendorOSPath);
-
- # ... and check if that kernel-version provides all the required modules
- my @blockModNames = $self->{'block-device'}->requiredBlockDeviceModules();
- foreach my $blockModName (@blockModNames) {
- my $blockMod =
- $self->_locateKernelModule($vendorOSPath, "$blockModName.ko",
- ["$vendorOSPath/lib/modules/$kernelVer/kernel/drivers/block"]);
- if (!defined $blockMod) {
- warn _tr(
- "unable to find blockdevice-module '%s' for kernel version '%s'.",
- $blockModName, $kernelVer
- );
- return;
- }
- }
- my $squashfsMod = $self->_locateKernelModule(
- $vendorOSPath,
- 'squashfs.ko',
- [
- "$vendorOSPath/lib/modules/$kernelVer/kernel/fs/squashfs",
- "$vendorOSPath/lib/modules/$kernelVer/kernel/fs"
- ]
- );
- if (!defined $squashfsMod) {
- warn _tr("unable to find squashfs-module for kernel version '%s'.",
- $kernelVer);
- return;
- }
- return 1;
-}
-
-sub addExportToConfigDB
-{
- my $self = shift;
- my $export = shift;
- my $openslxDB = shift;
-
- $export->{port} = $self->{'block-device'}->getExportPort($openslxDB);
-
- my $res = $openslxDB->addExport($export);
- return $res;
-}
-
-sub generateExportURI
-{
- my $self = shift;
- my $export = shift;
- my $vendorOS = shift;
-
- my $URI = $self->{'block-device'}->generateExportURI($export);
- $URI .= '/squashfs';
- return $URI;
-}
-
-sub requiredFSMods
-{
- my $self = shift;
-
- my @mods = $self->{'block-device'}->requiredBlockDeviceModules();
- push @mods, 'squashfs ';
- return @mods;
-}
-
-sub requiredFSTools
-{
- my $self = shift;
-
- return $self->{'block-device'}->requiredBlockDeviceTools();
-}
-
-sub showExportConfigInfo
-{
- my $self = shift;
- my $export = shift;
-
- $self->{'block-device'}->showExportConfigInfo($export);
- return;
-}
-
-################################################################################
-### implementation methods
-################################################################################
-
-#################################################################################
-# Branch to choose the appropriate squashfs version according to target system #
-################################################################################
-
-sub _createSquashFS
-{
- my $self = shift;
- my $source = shift;
- my $target = shift;
- my $includeExcludeList = shift;
-
-
- my @versionString = split(/-/, $self->{engine}->{'vendor-os-name'});
- my $mksquashfsVersion = $self->{engine}->{distro}->getSquashfsVersion($versionString[1]);
-
- vlog(0, "found version string $versionString[1] out of $self->{engine}->{'vendor-os-name'}");
- vlog(0, "use squashfs version: $mksquashfsVersion");
-
- $self->_createSquashFS_prepare($target);
-
- my $mksquashfsParams;
-
- $mksquashfsVersion == '3.2' && do
- {$mksquashfsParams = $self->_createSquashFS_setup_3_2($includeExcludeList)};
- $mksquashfsVersion == '3.3' && do
- {$mksquashfsParams = $self->_createSquashFS_setup_3_3($includeExcludeList)};
- $mksquashfsVersion == '4.0' && do
- {$mksquashfsParams = $self->_createSquashFS_setup_4($includeExcludeList)};
-
- $self->_createSquashFS_run($source, $target, $mksquashfsParams);
-
- return;
-}
-
-sub _createSquashFS_prepare
-{
- my $self = shift;
- my $target = shift;
-
- system("rm -f $target");
- # mksquasfs isn't significantly faster if fs already exists, but it
- # causes the filesystem to grow somewhat, so we remove it in order to
- # get the smallest FS-file possible.
-
- my $baseDir = dirname($target);
- if (!-e $baseDir) {
- if (system("mkdir -p $baseDir")) {
- die _tr("unable to create directory '%s', giving up! (%s)\n",
- $baseDir, $!);
- }
- }
- return;
-}
-
-
-sub _createSquashFS_run {
- my $self = shift;
- my $source = shift;
- my $target = shift;
- my $params = shift;
-
- # ... invoke mksquashfs ...
- vlog(0, _tr("invoking mksquashfs..."));
- my $mksquashfsBinary =
- "$openslxConfig{'base-path'}/share/squashfs/$params->{binary}";
- my $res =
- system("$mksquashfsBinary $source $target $params->{cmdlineOptions}");
- unlink($params->{tmpfile});
- # ... remove filter file if done
- if ($res) {
- die _tr(
- "unable to create squashfs for source '%s' as target '%s', giving up! (%s)",
- $source, $target, $!);
- }
- return;
-}
-
-sub _createSquashFS_setup_4
-{
- my $self = shift;
- my $includeExcludeList = shift;
-
- # dump filter to a file ...
- my $filterFile = "/tmp/slx-nbdsquash-filter-$$";
- my $includeFile = "/tmp/slx-nbdsquash-includes-$$";
- spitFile($filterFile, $includeExcludeList);
-
- slxsystem("sed $filterFile -e '/^-/d' -e 's/^+[ \t]*//' > $includeFile");
- slxsystem("sed -i $filterFile -e '/^+/d' -e 's/^-[ \t]*//'");
-
- my $result = {
- binary => "mksquashfs_4",
- cmdlineOptions => "-wildcards -ef $filterFile",
- tmpfile => "$filterFile"
- };
-
- return $result;
-}
-
-
-sub _createSquashFS_setup_3_3
-{
- my $self = shift;
- my $includeExcludeList = shift;
-
- # dump filter to a file ...
- my $filterFile = "/tmp/slx-nbdsquash-filter-$$";
- my $includeFile = "/tmp/slx-nbdsquash-includes-$$";
- spitFile($filterFile, $includeExcludeList);
-
- slxsystem("sed $filterFile -e '/^-/d' -e 's/^+[ \t]*//' > $includeFile");
- slxsystem("sed -i $filterFile -e '/^+/d' -e 's/^-[ \t]*//'");
-
- my $result = {
- binary => "mksquashfs_3_3",
- cmdlineOptions => "-wildcards -ef $filterFile",
- tmpfile => "$filterFile"
- };
-
- return $result;
-}
-
-
-sub _createSquashFS_setup_3_2
-{
- my $self = shift;
- my $includeExcludeList = shift;
-
- # dump filter to a file ...
- my $filterFile = "/tmp/slx-nbdsquash-filter-$$";
- spitFile($filterFile, $includeExcludeList);
-
- my $result = {
- binary => "mksquashfs_3_2",
- cmdlineOptions => "-ff $filterFile",
- tmpfile => "$filterFile"
- };
-
- return $result;
-}
-
-sub _determineIncludeExcludeList
-{
- my $self = shift;
-
- # Rsync uses a first match strategy, so we mix the local specifications
- # in front of the filterset given by the package (as the local filters
- # should always overrule the vendor filters):
- my $distroName = $self->{engine}->{'distro-name'};
- my $localFilterFile =
- "$openslxConfig{'config-path'}/distro-info/$distroName/export-filter";
- my $includeExcludeList
- = slurpFile($localFilterFile, { failIfMissing => 0 });
- $includeExcludeList .= $self->{engine}->{distro}->{'export-filter'};
- $includeExcludeList =~ s[^\s+][]igms;
- # remove any leading whitespace, as rsync doesn't like it
- return $includeExcludeList;
-}
-
-sub _mapRsyncFilter2Regex
-{
- my $self = shift;
- my $sourcePath = shift;
- my $rsyncFilter = shift;
-
- return join(
- "\n",
- map {
- if ($_ =~ m[^([-+]\s*)(.+?)\s*$])
- {
- my $action = $1;
- my $regex = $2;
- $regex =~ s[\*\*][.+]g;
- # '**' matches everything
- $regex =~ s[\*][[^/]+]g;
- # '*' matches anything except slashes
- $regex =~ s[\?][[^/]?]g;
- # '*' matches any single char except slash
- $regex =~ s[\?][[^/]?]g;
- # '*' matches any single char except slash
- $regex =~ s[\.][\\.]g;
- # escape any dots
- if (substr($regex, 0, 1) eq '/') {
- # absolute path given, need to extend by source-path:
- "$action^$sourcePath$regex\$";
- } else {
- # filename pattern given, need to anchor to the end only:
- "$action$regex\$";
- }
- } else {
- $_;
- }
- }
- split "\n",
- $rsyncFilter
- );
-}
-
-sub _addBlockDeviceTagToExport
-{
- my $self = shift;
- my $target = shift;
-
- my $tagName = "$target" . '@' . lc($self->{'block-device'}->{name});
- linkFile(basename($target), $tagName);
- return;
-}
-
-sub _removeBlockDeviceTagFromExport
-{
- my $self = shift;
- my $target = shift;
-
- my $tagName = "$target" . '@' . lc($self->{'block-device'}->{name});
- slxsystem("rm $tagName");
- # now find out whether or not there are any other tags left:
- my $vendorOSName = basename($target);
- opendir(DIR, dirname($target));
- my @tags = grep { /^$vendorOSName\@/ } readdir(DIR);
- return @tags ? 0 : 1;
- # return 1 if no more tags (i.e. it is safe to remove the image)
-}
-
-1;