summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-db/OpenSLX/ConfigDB.pm27
-rw-r--r--installer/OpenSLX/OSExport/Engine.pm15
-rw-r--r--installer/OpenSLX/OSExport/ExportType/Base.pm7
-rw-r--r--installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm15
-rw-r--r--installer/OpenSLX/OSExport/ExportType/NFS.pm15
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;