summaryrefslogtreecommitdiffstats
path: root/config-db/OpenSLX/ConfigDB.pm
diff options
context:
space:
mode:
Diffstat (limited to 'config-db/OpenSLX/ConfigDB.pm')
-rw-r--r--config-db/OpenSLX/ConfigDB.pm35
1 files changed, 30 insertions, 5 deletions
diff --git a/config-db/OpenSLX/ConfigDB.pm b/config-db/OpenSLX/ConfigDB.pm
index 1298b2d8..94ad9faf 100644
--- a/config-db/OpenSLX/ConfigDB.pm
+++ b/config-db/OpenSLX/ConfigDB.pm
@@ -47,6 +47,7 @@ my @supportExports = qw(
################################################################################
use OpenSLX::Basics;
use OpenSLX::DBSchema;
+use OpenSLX::Utils;
sub _checkAndUpgradeDBSchemaIfNecessary
{
@@ -501,10 +502,16 @@ sub addSystem
my $valRows = _aref(shift);
foreach my $valRow (@$valRows) {
- if (!defined $valRow->{kernel} || !length($valRow->{kernel})) {
+ if (!$valRow->{kernel}) {
$valRow->{kernel} = 'vmlinuz';
+ warn(
+ _tr(
+ "setting kernel of system '%s' to 'vmlinuz'!",
+ $valRow->{name}
+ )
+ );
}
- if (!defined $valRow->{label} || !length($valRow->{label})) {
+ if (!$valRow->{label}) {
$valRow->{label} = $valRow->{name};
}
}
@@ -959,14 +966,32 @@ sub aggregatedSystemFileInfoFor
}
$info->{'vendor-os'} = $vendorOS;
+ # check if the specified kernel file really exists (follow links while
+ # checking) and if not, find the newest kernel file that is available.
my $kernelPath =
"$openslxConfig{'private-path'}/stage1/$vendorOS->{name}/boot";
- $info->{'kernel-file'} = "$kernelPath/$system->{kernel}";
+ my $kernelFile = "$kernelPath/$system->{kernel}";
+ while (-l $kernelFile) {
+ $kernelFile = followLink($kernelFile);
+ }
+ if (!-e $kernelFile) {
+ # pick best kernel file available
+ my $osSetupEngine = instantiateClass("OpenSLX::OSSetup::Engine");
+ $osSetupEngine->initialize($vendorOS->{name}, 'none');
+ $kernelFile = $osSetupEngine->pickKernelFile($kernelPath);
+ warn(
+ _tr(
+ "setting kernel of system '%s' to '%s'!",
+ $info->{name}, $kernelFile
+ )
+ );
+ }
+ $info->{'kernel-file'} = $kernelFile;
+ # auto-generate export_uri if none has been given
my $exportURI = $export->{'uri'} || '';
if ($exportURI !~ m[\w]) {
- # auto-generate export_uri if none has been given:
- my $type = $export->{'type'};
+ # instantiate OSExport engine and ask it for exportURI
my $osExportEngine = instantiateClass("OpenSLX::OSExport::Engine");
$osExportEngine->initializeFromExisting($export->{name});
$exportURI = $osExportEngine->generateExportURI($export, $vendorOS);