From 58a64fc6a61e1c42bb93e507b03ce675afda3f66 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Mon, 12 Mar 2007 18:22:58 +0000 Subject: * added slxos-export script and the corresponding engine and exporter implementation for NFS. git-svn-id: http://svn.openslx.org/svn/openslx/trunk@760 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/OpenSLX/OSExport/ExportType/NFS.pm | 83 ++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 installer/OpenSLX/OSExport/ExportType/NFS.pm (limited to 'installer/OpenSLX/OSExport/ExportType/NFS.pm') diff --git a/installer/OpenSLX/OSExport/ExportType/NFS.pm b/installer/OpenSLX/OSExport/ExportType/NFS.pm new file mode 100644 index 00000000..8bb8f7e5 --- /dev/null +++ b/installer/OpenSLX/OSExport/ExportType/NFS.pm @@ -0,0 +1,83 @@ +# NFS.pm +# - provides NFS-specific overrides of the OpenSLX::OSExport::ExportType API. +# +# (c) 2006 - OpenSLX.com +# +# Oliver Tappe +# +package OpenSLX::OSExport::ExportType::NFS; + +use vars qw(@ISA $VERSION); +@ISA = ('OpenSLX::OSExport::ExportType::Base'); +$VERSION = 1.01; # API-version . implementation-version + +use strict; +use Carp; +use File::Basename; +use OpenSLX::Basics; +use OpenSLX::Utils; +use OpenSLX::OSExport::ExportType::Base 1.01; + +################################################################################ +### interface methods +################################################################################ +sub new +{ + my $class = shift; + my $self = { + 'name' => 'NFS', + }; + return bless $self, $class; +} + +sub initialize +{ + my $self = shift; + my $engine = shift; + + $self->SUPER::initialize($engine); +} + +sub exportVendorOS +{ + my $self = shift; + my $source = shift; + my $target = shift; + + $self->exportViaRsync($source, $target); + $self->addTargetToNfsExports($target); +} + +################################################################################ +### implementation methods +################################################################################ + +sub exportViaRsync +{ + my $self = shift; + my $source = shift; + my $target = shift; + + my $excludeIncludeList + = join("\n", @{$self->{'include-list'}}, @{$self->{'exclude-list'}}); + vlog 1, "using exclude-include-filter:\n$excludeIncludeList\n"; + open(RSYNC, "| rsync -av --delete --exclude-from=- $source/ $target") + or die _tr("unable to start rsync for source '%s', giving up! (%s)", + $source, $!); + print RSYNC $excludeIncludeList; + if (!close(RSYNC)) { + die _tr("unable to export to target '%s', giving up! (%s)", + $target, $!); + } +} + +sub addTargetToNfsExports +{ + my $self = shift; + my $target = shift; + + my $exports = slurpFile("/etc/exports"); +print "$exports\n"; +} + +1; -- cgit v1.2.3-55-g7522