summaryrefslogtreecommitdiffstats
path: root/installer/OpenSLX/OSExport/Engine.pm
diff options
context:
space:
mode:
authorOliver Tappe2007-04-02 15:36:40 +0200
committerOliver Tappe2007-04-02 15:36:40 +0200
commit086ccfc2d34e8401486b97eb05ace116a14fe353 (patch)
tree9afaa2e2345d05034aaaac2e64571f72b7b7588c /installer/OpenSLX/OSExport/Engine.pm
parent* added support for removing a vendor-OS (from disk and config-DB) (diff)
downloadcore-086ccfc2d34e8401486b97eb05ace116a14fe353.tar.gz
core-086ccfc2d34e8401486b97eb05ace116a14fe353.tar.xz
core-086ccfc2d34e8401486b97eb05ace116a14fe353.zip
* added support for removing an export (from disk and config-DB)
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@855 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'installer/OpenSLX/OSExport/Engine.pm')
-rw-r--r--installer/OpenSLX/OSExport/Engine.pm177
1 files changed, 117 insertions, 60 deletions
diff --git a/installer/OpenSLX/OSExport/Engine.pm b/installer/OpenSLX/OSExport/Engine.pm
index a6ab6640..03c4c224 100644
--- a/installer/OpenSLX/OSExport/Engine.pm
+++ b/installer/OpenSLX/OSExport/Engine.pm
@@ -97,6 +97,55 @@ sub initialize
}
}
}
+ my $distro = accessDistro($distroName);
+ $distro->initialize($self);
+ $self->{distro} = $distro;
+
+ # load module for the requested export type:
+ my $exporter = accessExporter($exportType);
+ $exporter->initialize($self);
+ $self->{'exporter'} = $exporter;
+
+ # setup source and target paths:
+ $self->{'vendor-os-path'}
+ = "$openslxConfig{'stage1-path'}/$vendorOSName";
+ $self->{'export-path'}
+ = "$openslxConfig{'export-path'}/$exportType/$vendorOSName";
+ vlog 1, _tr("vendor-OS from '%s' will be exported to '%s'",
+ $self->{'vendor-os-path'}, $self->{'export-path'});
+}
+
+sub exportVendorOS
+{
+ my $self = shift;
+
+ $self->{'exporter'}->exportVendorOS(
+ $self->{'vendor-os-path'},
+ $self->{'export-path'}
+ );
+ vlog 0, _tr("vendor-OS '%s' successfully exported to '%s'!",
+ $self->{'vendor-os-path'}, $self->{'export-path'});
+ $self->addExportToConfigDB();
+}
+
+sub purgeExport
+{
+ my $self = shift;
+
+ if ($self->{'exporter'}->purgeExport($self->{'export-path'})) {
+ vlog 0, _tr("export '%s' successfully removed!",
+ $self->{'export-path'});
+ }
+ $self->removeExportFromConfigDB();
+}
+
+################################################################################
+### implementation methods
+################################################################################
+sub accessDistro
+{
+ my $distroName = shift;
+
my $distroModule
= "OpenSLX::OSExport::Distro::"
.$supportedDistros{lc($distroName)}->{module};
@@ -112,11 +161,13 @@ sub initialize
die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)',
$distroModule, 1.01, $modVersion);
}
- my $distro = $distroModule->new;
- $distro->initialize($self);
- $self->{distro} = $distro;
+ return $distroModule->new;
+}
+
+sub accessExporter
+{
+ my $exportType = shift;
- # load module for the requested export type:
my $exportTypeModule
= "OpenSLX::OSExport::ExportType::"
.$supportedExportTypes{lc($exportType)}->{module};
@@ -132,37 +183,11 @@ sub initialize
die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)',
$exportTypeModule, 1.01, $modVersion);
}
- my $exporter = $exportTypeModule->new;
- $exporter->initialize($self);
- $self->{'exporter'} = $exporter;
-
- # setup source and target paths:
- $self->{'vendor-os-path'}
- = "$openslxConfig{'stage1-path'}/$vendorOSName";
- $self->{'export-path'}
- = "$openslxConfig{'export-path'}/$exportType/$vendorOSName";
- vlog 1, _tr("vendor-OS from '%s' will be exported to '%s'",
- $self->{'vendor-os-path'}, $self->{'export-path'});
+ return $exportTypeModule->new;
}
-sub exportVendorOS
-{
- my $self = shift;
-
- $self->{'exporter'}->exportVendorOS(
- $self->{'vendor-os-path'},
- $self->{'export-path'}
- );
- $self->addExportToConfigDB();
-}
-
-################################################################################
-### implementation methods
-################################################################################
-sub addExportToConfigDB
+sub accessConfigDB
{
- my $self = shift;
-
my $configDBModule = "OpenSLX::ConfigDB";
unless (eval "require $configDBModule") {
if ($! == 2) {
@@ -176,40 +201,72 @@ sub addExportToConfigDB
die _tr('Could not load module <%s> (Version <%s> required, but <%s> found)',
$configDBModule, 1.01, $modVersion);
}
- my $openslxDB = $configDBModule->new();
- $openslxDB->connect();
+ }
+ return $configDBModule->new();
+}
+
+sub addExportToConfigDB
+{
+ my $self = shift;
- # insert new export if it doesn't already exist in DB:
- my $exportName = $self->{'vendor-os-name'};
- my $export
- = $openslxDB->fetchExportByFilter({
+ my $openslxDB = accessConfigDB();
+ $openslxDB->connect();
+
+ # insert new export if it doesn't already exist in DB:
+ my $exportName = $self->{'vendor-os-name'};
+ my $export
+ = $openslxDB->fetchExportByFilter({
+ 'name' => $exportName,
+ 'type' => $self->{'export-type'},
+ });
+ if (defined $export) {
+ vlog 0, _tr("No need to change export '%s' in OpenSLX-database.\n",
+ $exportName);
+ } else {
+ my $vendorOSName = $self->{'vendor-os-name'};
+ my $vendorOS
+ = $openslxDB->fetchVendorOSByFilter({'name' => $vendorOSName});
+ if (!defined $vendorOS) {
+ die _tr("vendor-OS '%s' could not be found in OpenSLX-database, giving up!\n",
+ $vendorOSName);
+ }
+ my $id = $openslxDB->addExport(
+ {
+ 'vendor_os_id' => $vendorOS->{id},
'name' => $exportName,
'type' => $self->{'export-type'},
- });
- if (defined $export) {
- vlog 0, _tr("No need to change export '%s' in OpenSLX-database.\n",
- $exportName);
- } else {
- my $vendorOSName = $self->{'vendor-os-name'};
- my $vendorOS
- = $openslxDB->fetchVendorOSByFilter({'name' => $vendorOSName});
- if (!defined $vendorOS) {
- die _tr("vendor-OS '%s' could not be found in OpenSLX-database, giving up!\n",
- $vendorOSName);
}
- my $id = $openslxDB->addExport(
- {
- 'vendor_os_id' => $vendorOS->{id},
- 'name' => $exportName,
- 'type' => $self->{'export-type'},
- }
- );
- vlog 0, _tr("Export <%s> has been added to DB (ID=%s).\n",
- $exportName, $id);
- }
+ );
+ vlog 0, _tr("Export '%s' has been added to DB (ID=%s).\n",
+ $exportName, $id);
+ }
- $openslxDB->disconnect();
+ $openslxDB->disconnect();
+}
+
+sub removeExportFromConfigDB
+{
+ my $self = shift;
+
+ my $openslxDB = accessConfigDB();
+ $openslxDB->connect();
+
+ # remove export from DB:
+ my $exportName = $self->{'vendor-os-name'};
+ my $export
+ = $openslxDB->fetchExportByFilter({
+ 'name' => $exportName,
+ 'type' => $self->{'export-type'},
+ });
+ if (!defined $export) {
+ vlog 0, _tr("Export '%s' didn't exist in OpenSLX-database.\n",
+ $exportName);
+ } else {
+ $openslxDB->removeExport($export->{id});
+ vlog 0, _tr("Export '%s' has been removed from DB.\n", $exportName);
}
+
+ $openslxDB->disconnect();
}
1;