diff options
-rw-r--r-- | config-db/OpenSLX/ConfigDB.pm | 27 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/Engine.pm | 15 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/ExportType/Base.pm | 7 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm | 15 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/ExportType/NFS.pm | 15 |
5 files changed, 60 insertions, 19 deletions
diff --git a/config-db/OpenSLX/ConfigDB.pm b/config-db/OpenSLX/ConfigDB.pm index 971a9c8e..22584c10 100644 --- a/config-db/OpenSLX/ConfigDB.pm +++ b/config-db/OpenSLX/ConfigDB.pm @@ -940,41 +940,36 @@ sub aggregatedSystemFileInfoFor my $self = shift; my $system = shift; + my $info = { %$system }; + my $export = $self->fetchExportByID($system->{export_id}); if (!defined $export) { die _tr("DB-problem: system '%s' references export with id=%s, but that doesn't exist!", $system->{name}, $system->{export_id}); } + $info->{'export'} = $export; + my $vendorOS = $self->fetchVendorOSByID($export->{vendor_os_id}); if (!defined $vendorOS) { die _tr("DB-problem: export '%s' references vendor-OS with id=%s, but that doesn't exist!", $export->{name}, $export->{vendor_os_id}); } + $info->{'vendor-os'} = $vendorOS; + my $kernelPath = "$openslxConfig{'private-path'}/stage1/$vendorOS->{name}/boot"; + $info->{'kernel-file'} = "$kernelPath/$system->{kernel}"; my $exportURI = $export->{'uri'}; if ($exportURI !~ m[\w]) { # auto-generate export_uri if none has been given: my $type = $export->{'type'}; - my $serverIpToken - = length($export->{server_ip}) - ? $export->{server_ip} - : generatePlaceholderFor('serverip'); - my $port - = length($export->{port}) - ? ":$export->{port}" - : ''; - $exportURI - = $type.'://'.$serverIpToken.$port.$openslxConfig{'export-path'} - .'/'.$type.'/'.$export->{name}; + my $osExportEngine = instantiateClass("OpenSLX::OSExport::Engine"); + $osExportEngine->initializeFromExisting($export->{name}); + $exportURI = $osExportEngine->generateExportURI($export); } - - my $info = { %$system }; - $info->{'kernel-file'} = "$kernelPath/$system->{kernel}"; $info->{'export-uri'} = $exportURI; - $info->{'export'} = $export; - $info->{'vendor-os'} = $vendorOS; + return $info; } diff --git a/installer/OpenSLX/OSExport/Engine.pm b/installer/OpenSLX/OSExport/Engine.pm index 77b21eaa..4ffae1a8 100644 --- a/installer/OpenSLX/OSExport/Engine.pm +++ b/installer/OpenSLX/OSExport/Engine.pm @@ -39,6 +39,10 @@ use vars qw(%supportedExportTypes %supportedDistros); => { module => 'NBD_Squash' }, ); +my %aliasedExportTypes = ( + 'nbd' => 'nbd-squash', +); + %supportedDistros = ( '<any>' => { module => 'Any' }, @@ -158,6 +162,14 @@ sub purgeExport $self->removeExportFromConfigDB(); } +sub generateExportURI +{ + my $self = shift; + my $export = shift; + + return $self->{exporter}->generateExportURI($export); +} + sub requiredFSMods { my $self = shift; @@ -176,6 +188,9 @@ sub _initialize my $exportName = shift; my $exportType = lc(shift); + if (exists $aliasedExportTypes{lc($exportType)}) { + $exportType = $aliasedExportTypes{lc($exportType)}; + } if (!exists $supportedExportTypes{lc($exportType)}) { print _tr("Sorry, export type '%s' is unsupported.\n", $exportType); print _tr("List of supported export types:\n\t"); diff --git a/installer/OpenSLX/OSExport/ExportType/Base.pm b/installer/OpenSLX/OSExport/ExportType/Base.pm index ccf21826..a21d5499 100644 --- a/installer/OpenSLX/OSExport/ExportType/Base.pm +++ b/installer/OpenSLX/OSExport/ExportType/Base.pm @@ -60,11 +60,12 @@ sub addExportToConfigDB return $openslxDB->addExport($export); } -sub requiredFSMods +sub generateExportURI { - my $self = shift; +} - return ''; +sub requiredFSMods +{ } ################################################################################ diff --git a/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm b/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm index ec25d067..d5782b59 100644 --- a/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm +++ b/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm @@ -21,6 +21,7 @@ use strict; use Carp; use File::Basename; use OpenSLX::Basics; +use OpenSLX::ConfigDB qw(:support); use OpenSLX::OSExport::ExportType::Base 1.01; ################################################################################ @@ -111,6 +112,20 @@ sub addExportToConfigDB return $res; } +sub generateExportURI +{ + my $self = shift; + my $export = shift; + + my $server + = length($export->{server_ip}) + ? $export->{server_ip} + : generatePlaceholderFor('serverip'); + $server .= ":$export->{port}" if length($export->{port}); + + return "nbd://$server/squashfs"; +} + sub requiredFSMods { my $self = shift; diff --git a/installer/OpenSLX/OSExport/ExportType/NFS.pm b/installer/OpenSLX/OSExport/ExportType/NFS.pm index dad07b57..fa1d73b3 100644 --- a/installer/OpenSLX/OSExport/ExportType/NFS.pm +++ b/installer/OpenSLX/OSExport/ExportType/NFS.pm @@ -21,6 +21,7 @@ use strict; use Carp; use File::Basename; use OpenSLX::Basics; +use OpenSLX::ConfigDB qw(:support); use OpenSLX::Utils; use OpenSLX::OSExport::ExportType::Base 1.01; @@ -58,6 +59,20 @@ sub purgeExport 1; } +sub generateExportURI +{ + my $self = shift; + my $export = shift; + + my $server + = length($export->{server_ip}) + ? $export->{server_ip} + : generatePlaceholderFor('serverip'); + $server .= ":$export->{port}" if length($export->{port}); + + return "nfs://$server$openslxConfig{'export-path'}/nfs/$export->{name}" +} + sub requiredFSMods { my $self = shift; |