diff --git a/lib/get_debian_release b/lib/get_debian_release index 639ff8c2..47a0ad6a 100644 --- a/lib/get_debian_release +++ b/lib/get_debian_release @@ -4,25 +4,10 @@ # Returns the Debian release codename of the node calling this function. # # @return out The Debian release codename of the node calling this function. + +# XXX: This is a deprecated alias for set_debian_info. + +PROCESS '/usr/lib/ngcp-ngcpcfg/set_debian_info'; +out = debian.codename; + -%] -[% PERL -%] - open my $hh, '<', '/etc/debian_version' or die "Error opening /etc/debian_version"; - my $debian_version = <$hh>; - my $debian_codename; - close $hh; - chomp $debian_version; - if ($debian_version =~ /^8\.*/) { - $debian_codename = 'jessie'; - } elsif ($debian_version =~ /^9\.*/) { - $debian_codename = 'stretch'; - } elsif ($debian_version =~ /^10\.*/) { - $debian_codename = 'buster'; - } elsif ($debian_version =~ /^11\.*/) { - $debian_codename = 'bullseye'; - } elsif ($debian_version =~ /^[[:alnum:]]+\.*\/sid/) { - $debian_codename = (split /\//, $debian_version, 2)[0]; - } - die "Fatal error retrieving Debian release codename [$debian_codename]" unless length $debian_codename; - die "Fatal error retrieving Debian release version [$debian_version]" unless length $debian_version; - $stash->set(out => $debian_codename); -[% END -%] diff --git a/lib/set_debian_info b/lib/set_debian_info new file mode 100644 index 00000000..ccaab987 --- /dev/null +++ b/lib/set_debian_info @@ -0,0 +1,51 @@ +[% +# vi: ft=tt2 + +# Sets the Debian release information for the node calling this function. +# +# This sets the global variables: +# debian.codename +# debian.version +-%] +[% PERL -%] + my $version_file = '/etc/debian_version'; + my $debian_codename; + my $debian_version; + my $debian_version_major; + + open my $hh, '<', $version_file or die "Error opening $version_file"; + $debian_version = <$hh>; + close $hh; + chomp $debian_version; + die "Fatal error retrieving Debian release version from $version_file" + unless length $debian_version; + + my %versions = ( + 8 => 'jessie', + 9 => 'stretch', + 10 => 'buster', + 11 => 'bullseye', + ); + my %codenames = map { $versions{$_} => $_ } keys %versions; + + if ($debian_version =~ m/^([0-9]+)\.[0-9]+/) { + $debian_version_major = $1; + $debian_codename = $versions{$debian_version_major}; + die "Error: unsupported Debian release $debian_version" + unless defined $debian_codename; + } elsif ($debian_version =~ m{^([[:alnum:]]+)/sid}) { + $debian_codename = $1; + $debian_version_major = $codenames{$debian_codename}; + die "Error: unsupported Debian codename $debian_codename" + unless defined $debian_version_major; + } else { + die "Fatal error retrieving Debian release codename [$debian_version]"; + } + + $stash->update({ + debian => { + version => $debian_version_major, + codename => $debian_codename, + } + }); +[% END -%]