[pve-devel] [PATCH container] fix os-release mapping for similar flavoured distros

Thomas Lamprecht t.lamprecht at proxmox.com
Fri Aug 18 14:59:33 CEST 2017


This avoid failing the check where the auto detected type differs
from the configs ostype.

Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
---
 src/PVE/LXC/Setup.pm | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/PVE/LXC/Setup.pm b/src/PVE/LXC/Setup.pm
index a503461..8be1b90 100644
--- a/src/PVE/LXC/Setup.pm
+++ b/src/PVE/LXC/Setup.pm
@@ -20,13 +20,17 @@ my $plugins = {
     centos    => 'PVE::LXC::Setup::CentOS',
     fedora    => 'PVE::LXC::Setup::Fedora',
     opensuse  => 'PVE::LXC::Setup::SUSE',
-    sles      => 'PVE::LXC::Setup::SUSE',
     archlinux => 'PVE::LXC::Setup::ArchLinux',
-    arch      => 'PVE::LXC::Setup::ArchLinux',
     alpine    => 'PVE::LXC::Setup::Alpine',
     gentoo    => 'PVE::LXC::Setup::Gentoo',
 };
 
+# a map to allow supporting related distro flavours
+my $os_release_vendor_map = {
+    arch => 'archlinux',
+    sles => 'opensuse',
+};
+
 my $autodetect_type = sub {
     my ($self, $rootdir, $os_release) = @_;
 
@@ -76,6 +80,8 @@ sub new {
     } elsif (!defined($type)) {
 	# try to autodetect type
 	$type = &$autodetect_type($self, $rootdir, $os_release);
+	# fixup type if needed, i.e. SLES can be handled by our SUSE class
+	$type = $os_release_vendor_map->{$type} if $os_release_vendor_map->{$type};
 	my $expected_type = $conf->{ostype} || $type;
 
 	die "got unexpected ostype ($type != $expected_type)\n"
-- 
2.11.0




More information about the pve-devel mailing list