diff options
| author | Oliver Tappe | 2007-08-15 17:36:56 +0200 |
|---|---|---|
| committer | Oliver Tappe | 2007-08-15 17:36:56 +0200 |
| commit | cfe31ca7acca396c4f2744114c08fc0802cef5c3 (patch) | |
| tree | d7d3c8631b65547c9636ec8c0743f089531e4edf /lib/OpenSLX | |
| parent | Cleaned up and corrected error messages (and german translations, see (diff) | |
| download | core-cfe31ca7acca396c4f2744114c08fc0802cef5c3.tar.gz core-cfe31ca7acca396c4f2744114c08fc0802cef5c3.tar.xz core-cfe31ca7acca396c4f2744114c08fc0802cef5c3.zip | |
* switched from perl-based distro-configuration files to "real" configuration
files (handled by Config::General)
* removed most version specific distribution modules (only Debian-3.1 remains
as it requires some special treatment). For all the other distributions,
the specific info is now contained in the configuration files
* added configuration files (settings.default) for every supported
distribution (only Fedora is still missing some info)
* added support for inclusion of (externally generated) mirror lists and
automatic selection of the five best (fastest) mirrors from that list (20
are tried).
For each repository, a mirror configuration file is created (in
/etc/opt/openslx/distro-info/<distro>/mirrors/<repo>) after that info
has been gathered.
* added current mirror lists for each distribution repository to the
distro-info hierarchy
* updated settings.example to reflect new configuration syntax
git-svn-id: http://svn.openslx.org/svn/openslx/trunk@1322 95ad53e4-c205-0410-b2fa-d234c58c8868
Diffstat (limited to 'lib/OpenSLX')
| -rw-r--r-- | lib/OpenSLX/Basics.pm | 13 | ||||
| -rw-r--r-- | lib/OpenSLX/Utils.pm | 46 |
2 files changed, 54 insertions, 5 deletions
diff --git a/lib/OpenSLX/Basics.pm b/lib/OpenSLX/Basics.pm index 53103cef..80296e92 100644 --- a/lib/OpenSLX/Basics.pm +++ b/lib/OpenSLX/Basics.pm @@ -83,11 +83,14 @@ my $translations; # extended settings follow, which are only supported by slxsettings, # but not by any other script: # - 'db-user' => undef, - 'db-passwd' => undef, - 'default-shell' => 'bash', - 'default-timezone' => 'Europe/Berlin', - 'ossetup-max-try-count' => '5', + 'db-user' => undef, + 'db-passwd' => undef, + 'default-shell' => 'bash', + 'default-timezone' => 'Europe/Berlin', + 'mirrors-preferred-top-level-domain' => undef, + 'mirrors-to-try-count' => '20', + 'mirrors-to-use-count' => '5', + 'ossetup-max-try-count' => '5', ); chomp($openslxConfig{'locale-charmap'}); diff --git a/lib/OpenSLX/Utils.pm b/lib/OpenSLX/Utils.pm index bc57078a..86c31ca9 100644 --- a/lib/OpenSLX/Utils.pm +++ b/lib/OpenSLX/Utils.pm @@ -30,12 +30,16 @@ $VERSION = 1.01; unshiftHereDoc string2Array chrootInto + mergeHash + getFQDN ); ################################################################################ ### Module implementation ################################################################################ use File::Basename; +use Socket; +use Sys::Hostname; use OpenSLX::Basics; @@ -230,4 +234,46 @@ sub chrootInto return; } +sub mergeHash +{ + my $targetHash = shift; + my $sourceHash = shift; + my $fillOnly = shift || 0; + + foreach my $key (keys %{$sourceHash}) { + my $sourceVal = $sourceHash->{$key}; + if (ref($sourceVal) eq 'HASH') { + if (!exists $targetHash->{$key}) { + $targetHash->{$key} = {}; + } + mergeHash($targetHash->{$key}, $sourceVal); + } + elsif (ref($sourceVal) eq 'ARRAY') { + if (!exists $targetHash->{$key}) { + $targetHash->{$key} = []; + } + foreach my $val (@{$sourceHash->{$key}}) { + my $targetVal = {}; + push @{$targetHash->{$key}}, $targetVal; + mergeHash($targetVal, $sourceVal); + } + } + else { + next if $fillOnly && exists $targetHash->{$key}; + $targetHash->{$key} = $sourceVal; + } + } +} + +sub getFQDN +{ + my $hostName = hostname(); + + my $hostAddr = gethostbyname($hostName) + or die(_tr("unable to get address of host '%s'", $hostName)); + my $FQDN = gethostbyaddr($hostAddr, AF_INET) + or die(_tr("unable to get dns-name of address '%s'", $hostAddr)); + return $FQDN; +} + 1; |
