summaryrefslogtreecommitdiffstats
path: root/installer/OpenSLX/OSExport/Engine.pm
diff options
context:
space:
mode:
Diffstat (limited to 'installer/OpenSLX/OSExport/Engine.pm')
-rw-r--r--installer/OpenSLX/OSExport/Engine.pm60
1 files changed, 58 insertions, 2 deletions
diff --git a/installer/OpenSLX/OSExport/Engine.pm b/installer/OpenSLX/OSExport/Engine.pm
index ed7a2900..085d10f7 100644
--- a/installer/OpenSLX/OSExport/Engine.pm
+++ b/installer/OpenSLX/OSExport/Engine.pm
@@ -13,7 +13,7 @@ use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
- %supportedExportTypes
+ %supportedExportTypes %supportedDistros
);
use strict;
@@ -21,7 +21,7 @@ use Carp;
use File::Basename;
use OpenSLX::Basics;
-use vars qw(%supportedExportTypes);
+use vars qw(%supportedExportTypes %supportedDistros);
%supportedExportTypes = (
'nfs'
@@ -32,6 +32,41 @@ use vars qw(%supportedExportTypes);
=> { module => 'NBD_Squash' },
);
+%supportedDistros = (
+ 'debian-3.1'
+ => { module => 'Debian_3_1' },
+ 'debian-4.0'
+ => { module => 'Debian_4_0' },
+ 'fedora-6'
+ => { module => 'Fedora_6' },
+ 'fedora-6-x86_64'
+ => { module => 'Fedora_6_x86_64' },
+ 'gentoo-2005.1'
+ => { module => 'Gentoo_2005_1' },
+ 'gentoo-2006.1'
+ => { module => 'Gentoo_2006_1' },
+ 'mandriva-2007.0'
+ => { module => 'Mandriva_2007_0' },
+ 'suse-9.3'
+ => { module => 'SUSE_9_3' },
+ 'suse-10.0'
+ => { module => 'SUSE_10_0' },
+ 'suse-10.0-x86_64'
+ => { module => 'SUSE_10_0_x86_64' },
+ 'suse-10.1'
+ => { module => 'SUSE_10_1' },
+ 'suse-10.1-x86_64'
+ => { module => 'SUSE_10_1_x86_64' },
+ 'suse-10.2'
+ => { module => 'SUSE_10_2' },
+ 'suse-10.2-x86_64'
+ => { module => 'SUSE_10_2_x86_64' },
+ 'ubuntu-6.06'
+ => { module => 'Ubuntu_6_06' },
+ 'ubuntu-6.10'
+ => { module => 'Ubuntu_6_10' },
+);
+
################################################################################
### interface methods
################################################################################
@@ -63,6 +98,27 @@ sub initialize
my $distroName = $1;
$self->{'distro-name'} = $distroName;
+ # load module for the requested distro:
+ my $distroModule
+ = "OpenSLX::OSExport::Distro::"
+ .$supportedDistros{lc($distroName)}->{module};
+ unless (eval "require $distroModule") {
+ if ($! == 2) {
+ die _tr("Distro-module <%s> not found!\n", $distroModule);
+ } else {
+ die _tr("Unable to load distro-module <%s> (%s)\n", $distroModule, $@);
+ }
+ }
+ my $modVersion = $distroModule->VERSION;
+ if ($modVersion < 1.01) {
+ die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)',
+ $distroModule, 1.01, $modVersion);
+ }
+ $distroModule->import;
+ my $distro = $distroModule->new;
+ $distro->initialize($self);
+ $self->{distro} = $distro;
+
# load module for the requested export type:
my $exportTypeModule
= "OpenSLX::OSExport::ExportType::"