diff options
author | Oliver Tappe | 2007-05-29 22:06:16 +0200 |
---|---|---|
committer | Oliver Tappe | 2007-05-29 22:06:16 +0200 |
commit | d561c9b1d1440185a5000c3d4df4395ba6de9a22 (patch) | |
tree | d1b2227c7e47e8479c52bcb0e8490aa4bd5d1cb8 /installer/OpenSLX/OSExport | |
parent | * (hopefully) fixed problem with respect to wget repeatedly failing with (diff) | |
download | core-d561c9b1d1440185a5000c3d4df4395ba6de9a22.tar.gz core-d561c9b1d1440185a5000c3d4df4395ba6de9a22.tar.xz core-d561c9b1d1440185a5000c3d4df4395ba6de9a22.zip |
* changed handling of exports to drop support for having more than one
export for a given vendor-OS with the same export-type
* exports are now named according to the pattern <vendor-os>-<export-type>
(instead of <vendor-os>-<X> where X was a letter)
* change slxos-export to show the export-config-info after updating an
export, too (not only after creating a new export).
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1108 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer/OpenSLX/OSExport')
-rw-r--r-- | installer/OpenSLX/OSExport/Engine.pm | 59 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/ExportType/Base.pm | 4 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm | 23 | ||||
-rw-r--r-- | installer/OpenSLX/OSExport/ExportType/NFS.pm | 29 |
4 files changed, 56 insertions, 59 deletions
diff --git a/installer/OpenSLX/OSExport/Engine.pm b/installer/OpenSLX/OSExport/Engine.pm index 4ffae1a8..6264471a 100644 --- a/installer/OpenSLX/OSExport/Engine.pm +++ b/installer/OpenSLX/OSExport/Engine.pm @@ -108,9 +108,7 @@ sub initializeForNew die _tr("vendor-OS '%s' not found in DB, giving up!", $vendorOSName); } - my $exportCounter - = $openslxDB->incrementExportCounterForVendorOS($vendorOS->{id}); - my $exportName = sprintf "$vendorOSName-%c", 64+$exportCounter; + my $exportName = "$vendorOSName-$exportType"; $openslxDB->disconnect(); @@ -135,22 +133,6 @@ sub exportVendorOS $self->addExportToConfigDB(); } -sub updateExportedVendorOS -{ - my $self = shift; - my $exportName = shift; - - 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'}, - $self->{'export-path'} - ); - vlog 0, _tr("export '%s' successfully updated!", $self->{'export-path'}); -} - sub purgeExport { my $self = shift; @@ -236,7 +218,7 @@ sub _initialize $self->{'vendor-os-path'} = "$openslxConfig{'stage1-path'}/$vendorOSName"; $self->{'export-path'} - = "$openslxConfig{'export-path'}/$exportType/$exportName"; + = "$openslxConfig{'export-path'}/$exportType/$vendorOSName"; vlog 1, _tr("vendor-OS from '%s' will be exported to '%s'", $self->{'vendor-os-path'}, $self->{'export-path'}); } @@ -248,17 +230,31 @@ sub addExportToConfigDB my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); $openslxDB->connect(); - my $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); - # now create a default system for that export, using the standard kernel: - system("slxconfig add-system $self->{'export-name'}"); + 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; + + # now create a default system for that export, using the standard kernel: + system("slxconfig add-system $self->{'export-name'}"); + } $openslxDB->disconnect(); } @@ -275,7 +271,6 @@ sub removeExportFromConfigDB my $export = $openslxDB->fetchExportByFilter({ 'name' => $exportName, - 'type' => $self->{'export-type'}, }); if (!defined $export) { vlog 0, _tr("Export '%s' doesn't exist in OpenSLX-database.\n", diff --git a/installer/OpenSLX/OSExport/ExportType/Base.pm b/installer/OpenSLX/OSExport/ExportType/Base.pm index e0f5c5be..7e0aa464 100644 --- a/installer/OpenSLX/OSExport/ExportType/Base.pm +++ b/installer/OpenSLX/OSExport/ExportType/Base.pm @@ -68,6 +68,10 @@ sub requiredFSMods { } +sub showExportConfigInfo +{ +} + ################################################################################ ### implementation methods ################################################################################ diff --git a/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm b/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm index f721d6d2..bb26a619 100644 --- a/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm +++ b/installer/OpenSLX/OSExport/ExportType/NBD_Squash.pm @@ -113,7 +113,6 @@ sub addExportToConfigDB = $openslxDB->incrementGlobalCounter('next-nbd-server-port'); my $res = $openslxDB->addExport($export); - $self->showNbdParams($export) if $res; return $res; } @@ -138,6 +137,17 @@ sub requiredFSMods return 'nbd squashfs'; } +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->{engine}->{'export-path'} -r"); + print (('#' x 80)."\n"); +} + ################################################################################ ### implementation methods ################################################################################ @@ -182,17 +192,6 @@ sub createSquashFS } } -sub showNbdParams -{ - 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->{engine}->{'export-path'} -r"); - print (('#' x 80)."\n"); -} - sub mapRsyncFilter2Regex { my $sourcePath = shift; diff --git a/installer/OpenSLX/OSExport/ExportType/NFS.pm b/installer/OpenSLX/OSExport/ExportType/NFS.pm index e3cd9cce..f63a2d23 100644 --- a/installer/OpenSLX/OSExport/ExportType/NFS.pm +++ b/installer/OpenSLX/OSExport/ExportType/NFS.pm @@ -44,7 +44,6 @@ sub exportVendorOS my $target = shift; $self->copyViaRsync($source, $target); - $self->addTargetToNfsExports($target); } sub purgeExport @@ -80,6 +79,20 @@ sub requiredFSMods return '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->{engine}->{'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"); +} + ################################################################################ ### implementation methods ################################################################################ @@ -105,18 +118,4 @@ sub copyViaRsync } } -sub addTargetToNfsExports -{ - my $self = shift; - my $target = 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->{engine}->{'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"); -} - 1; |