diff options
Diffstat (limited to 'installer/OpenSLX/OSExport/Engine.pm')
| -rw-r--r-- | installer/OpenSLX/OSExport/Engine.pm | 60 |
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::" |
