80 lines
2.8 KiB
Diff
80 lines
2.8 KiB
Diff
|
|
From c4b342ded57aa1ad0ff01b8df8ae6bc900f0c213 Mon Sep 17 00:00:00 2001
|
||
|
|
From: openEuler BUildteam <buildteam@openeuler.org>
|
||
|
|
Date: Tue, 23 Jun 2020 16:45:57 +0800
|
||
|
|
Subject: [PATCH] util: add get_linux_distro function to replace platfom.dist
|
||
|
|
|
||
|
|
---
|
||
|
|
cloudinit/util.py | 39 ++++++++++++++++++++++++++++++++++++---
|
||
|
|
1 file changed, 36 insertions(+), 3 deletions(-)
|
||
|
|
|
||
|
|
diff --git a/cloudinit/util.py b/cloudinit/util.py
|
||
|
|
index ac9ae81..ff28b61 100644
|
||
|
|
--- a/cloudinit/util.py
|
||
|
|
+++ b/cloudinit/util.py
|
||
|
|
@@ -579,6 +579,39 @@ def get_cfg_option_int(yobj, key, default=0):
|
||
|
|
return int(get_cfg_option_str(yobj, key, default=default))
|
||
|
|
|
||
|
|
|
||
|
|
+def get_linux_distro():
|
||
|
|
+ distro_name = ''
|
||
|
|
+ distro_version = ''
|
||
|
|
+ if os.path.exists('/etc/os-release'):
|
||
|
|
+ os_release = load_file('/etc/os-release')
|
||
|
|
+ for line in os_release.splitlines():
|
||
|
|
+ if line.strip().startswith('ID='):
|
||
|
|
+ distro_name = line.split('=')[-1]
|
||
|
|
+ distro_name = distro_name.replace('"', '')
|
||
|
|
+ if line.strip().startswith('VERSION_ID='):
|
||
|
|
+ # Lets hope for the best that distros stay consistent ;)
|
||
|
|
+ distro_version = line.split('=')[-1]
|
||
|
|
+ distro_version = distro_version.replace('"', '')
|
||
|
|
+ else:
|
||
|
|
+ dist = ('', '', '')
|
||
|
|
+ try:
|
||
|
|
+ # Will be removed in 3.7
|
||
|
|
+ dist = platform.dist() # pylint: disable=W1505
|
||
|
|
+ except Exception:
|
||
|
|
+ pass
|
||
|
|
+ finally:
|
||
|
|
+ found = None
|
||
|
|
+ for entry in dist:
|
||
|
|
+ if entry:
|
||
|
|
+ found = 1
|
||
|
|
+ if not found:
|
||
|
|
+ LOG.warning('Unable to determine distribution, template '
|
||
|
|
+ 'expansion may have unexpected results')
|
||
|
|
+ return dist
|
||
|
|
+
|
||
|
|
+ return (distro_name, distro_version, platform.machine())
|
||
|
|
+
|
||
|
|
+
|
||
|
|
def system_info():
|
||
|
|
info = {
|
||
|
|
'platform': platform.platform(),
|
||
|
|
@@ -586,19 +619,19 @@ def system_info():
|
||
|
|
'release': platform.release(),
|
||
|
|
'python': platform.python_version(),
|
||
|
|
'uname': platform.uname(),
|
||
|
|
- 'dist': platform.dist(), # pylint: disable=W1505
|
||
|
|
+ 'dist': get_linux_distro()
|
||
|
|
}
|
||
|
|
system = info['system'].lower()
|
||
|
|
var = 'unknown'
|
||
|
|
if system == "linux":
|
||
|
|
linux_dist = info['dist'][0].lower()
|
||
|
|
- if linux_dist in ('centos', 'fedora', 'debian', 'openEuler'):
|
||
|
|
+ if linux_dist in ('centos', 'debian', 'fedora', 'rhel', 'suse', 'openEuler'):
|
||
|
|
var = linux_dist
|
||
|
|
elif linux_dist in ('ubuntu', 'linuxmint', 'mint'):
|
||
|
|
var = 'ubuntu'
|
||
|
|
elif linux_dist == 'redhat':
|
||
|
|
var = 'rhel'
|
||
|
|
- elif linux_dist == 'suse':
|
||
|
|
+ elif linux_dist in ('opensuse', 'sles'):
|
||
|
|
var = 'suse'
|
||
|
|
else:
|
||
|
|
var = 'linux'
|
||
|
|
--
|
||
|
|
1.8.3.1
|
||
|
|
|