From 41755a8c5ae4f093e748d3adf28a78c2c4c41728 Mon Sep 17 00:00:00 2001 From: Oliver Tappe Date: Sun, 6 May 2007 16:52:34 +0000 Subject: * added support to NBD_Squash-exporter for selecting the next free server-port automatically * added missing code to clean dependent data if removing an export (systems) or a vendor-OS (exports and systems) git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1013 95ad53e4-c205-0410-b2fa-d234c58c8868 --- installer/OpenSLX/OSSetup/Engine.pm | 57 +++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 22 deletions(-) (limited to 'installer/OpenSLX/OSSetup/Engine.pm') diff --git a/installer/OpenSLX/OSSetup/Engine.pm b/installer/OpenSLX/OSSetup/Engine.pm index a9376132..f5ebb20b 100644 --- a/installer/OpenSLX/OSSetup/Engine.pm +++ b/installer/OpenSLX/OSSetup/Engine.pm @@ -322,6 +322,41 @@ sub addInstalledVendorOSToConfigDB $openslxDB->disconnect(); } +sub removeVendorOSFromConfigDB +{ + my $self = shift; + + my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); + $openslxDB->connect(); + + my $vendorOSName = $self->{'vendor-os-name'}; + my $vendorOS + = $openslxDB->fetchVendorOSByFilter({ 'name' => $vendorOSName }); + if (!defined $vendorOS) { + vlog 0, _tr("Vendor-OS '%s' didn't exist in OpenSLX-database.\n", + $vendorOSName); + } else { + # remove all exports (and systems) using this vendor-OS and then + # remove the vendor-OS itself: + my @exports = $openslxDB->fetchExportByFilter( + { 'vendor_os_id' => $vendorOS->{id} } + ); + foreach my $export (@exports) { + my $osExportEngine = instantiateClass("OpenSLX::OSExport::Engine"); + $osExportEngine->initializeFromExisting($export->{name}); + vlog 0, _tr("purging export '%s', since it belongs to the vendor-OS being deleted...", + $export->{name}); + $osExportEngine->purgeExport(); + } + + $openslxDB->removeVendorOS($vendorOS->{id}); + vlog 0, _tr("Vendor-OS '%s' has been removed from DB!\n", + $vendorOSName); + } + + $openslxDB->disconnect(); +} + ################################################################################ ### implementation methods ################################################################################ @@ -867,28 +902,6 @@ sub clone_determineIncludeExcludeList return $includeExcludeList; } -sub removeVendorOSFromConfigDB -{ - my $self = shift; - - my $openslxDB = instantiateClass("OpenSLX::ConfigDB"); - $openslxDB->connect(); - - my $vendorOSName = $self->{'vendor-os-name'}; - my $vendorOS - = $openslxDB->fetchVendorOSByFilter({ 'name' => $vendorOSName }); - if (!defined $vendorOS) { - vlog 0, _tr("Vendor-OS '%s' didn't exist in OpenSLX-database.\n", - $vendorOSName); - } else { - $openslxDB->removeVendorOS($vendorOS->{id}); - vlog 0, _tr("Vendor-OS '%s' has been removed from DB!\n", - $vendorOSName); - } - - $openslxDB->disconnect(); -} - ################################################################################ ### utility methods ################################################################################ -- cgit v1.2.3-55-g7522