summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hammerl <info@christian-hammerl.de>2014-10-18 15:02:04 +0200
committerChristian Hammerl <info@christian-hammerl.de>2014-10-18 15:02:04 +0200
commit5efc4efca7288f072028d1a13e5d0d731f0b7a8f (patch)
tree0fbf11aed36f97a6e568c3093e37d51cd86231a2
parent57d2622c8cff37d3a61c3b6fc1d422c61695e2fb (diff)
downloadansible-5efc4efca7288f072028d1a13e5d0d731f0b7a8f.tar.gz
Fix os_family and distribution on archlinux
Fixes #8732, ansible/ansible-modules-core#34
-rw-r--r--lib/ansible/module_utils/facts.py145
1 files changed, 73 insertions, 72 deletions
diff --git a/lib/ansible/module_utils/facts.py b/lib/ansible/module_utils/facts.py
index 8ec1b4f7c7..6bbcaced08 100644
--- a/lib/ansible/module_utils/facts.py
+++ b/lib/ansible/module_utils/facts.py
@@ -273,84 +273,85 @@ class Facts(object):
self.facts['distribution_release'] = dist[2] or 'NA'
# Try to handle the exceptions now ...
for (path, name) in Facts.OSDIST_LIST:
- if os.path.exists(path) and os.path.getsize(path) > 0:
- if self.facts['distribution'] in ('Fedora', ):
- # Once we determine the value is one of these distros
- # we trust the values are always correct
- break
- elif name == 'RedHat':
- data = get_file_content(path)
- if 'Red Hat' in data:
- self.facts['distribution'] = name
- else:
- self.facts['distribution'] = data.split()[0]
- break
- elif name == 'OtherLinux':
- data = get_file_content(path)
- if 'Amazon' in data:
- self.facts['distribution'] = 'Amazon'
- self.facts['distribution_version'] = data.split()[-1]
- break
- elif name == 'OpenWrt':
- data = get_file_content(path)
- if 'OpenWrt' in data:
- self.facts['distribution'] = name
- version = re.search('DISTRIB_RELEASE="(.*)"', data)
- if version:
- self.facts['distribution_version'] = version.groups()[0]
- release = re.search('DISTRIB_CODENAME="(.*)"', data)
- if release:
- self.facts['distribution_release'] = release.groups()[0]
+ if os.path.exists(path):
+ if os.path.getsize(path) > 0:
+ if self.facts['distribution'] in ('Fedora', ):
+ # Once we determine the value is one of these distros
+ # we trust the values are always correct
break
- elif name == 'Alpine':
- data = get_file_content(path)
- self.facts['distribution'] = name
- self.facts['distribution_version'] = data
- break
- elif name == 'Solaris':
- data = get_file_content(path).split('\n')[0]
- if 'Solaris' in data:
- ora_prefix = ''
- if 'Oracle Solaris' in data:
- data = data.replace('Oracle ','')
- ora_prefix = 'Oracle '
- self.facts['distribution'] = data.split()[0]
- self.facts['distribution_version'] = data.split()[1]
- self.facts['distribution_release'] = ora_prefix + data
+ elif name == 'RedHat':
+ data = get_file_content(path)
+ if 'Red Hat' in data:
+ self.facts['distribution'] = name
+ else:
+ self.facts['distribution'] = data.split()[0]
break
- elif name == 'SuSE':
- data = get_file_content(path)
- if 'suse' in data.lower():
- if path == '/etc/os-release':
- release = re.search("PRETTY_NAME=[^(]+ \(?([^)]+?)\)", data)
+ elif name == 'OtherLinux':
+ data = get_file_content(path)
+ if 'Amazon' in data:
+ self.facts['distribution'] = 'Amazon'
+ self.facts['distribution_version'] = data.split()[-1]
+ break
+ elif name == 'OpenWrt':
+ data = get_file_content(path)
+ if 'OpenWrt' in data:
+ self.facts['distribution'] = name
+ version = re.search('DISTRIB_RELEASE="(.*)"', data)
+ if version:
+ self.facts['distribution_version'] = version.groups()[0]
+ release = re.search('DISTRIB_CODENAME="(.*)"', data)
if release:
self.facts['distribution_release'] = release.groups()[0]
- break
- elif path == '/etc/SuSE-release':
- data = data.splitlines()
- for line in data:
- release = re.search('CODENAME *= *([^\n]+)', line)
- if release:
- self.facts['distribution_release'] = release.groups()[0].strip()
- break
- elif name == 'Debian':
- data = get_file_content(path)
- if 'Debian' in data:
- release = re.search("PRETTY_NAME=[^(]+ \(?([^)]+?)\)", data)
- if release:
- self.facts['distribution_release'] = release.groups()[0]
- break
- elif name == 'Mandriva':
- data = get_file_content(path)
- if 'Mandriva' in data:
- version = re.search('DISTRIB_RELEASE="(.*)"', data)
- if version:
- self.facts['distribution_version'] = version.groups()[0]
- release = re.search('DISTRIB_CODENAME="(.*)"', data)
- if release:
- self.facts['distribution_release'] = release.groups()[0]
+ break
+ elif name == 'Alpine':
+ data = get_file_content(path)
self.facts['distribution'] = name
+ self.facts['distribution_version'] = data
break
+ elif name == 'Solaris':
+ data = get_file_content(path).split('\n')[0]
+ if 'Solaris' in data:
+ ora_prefix = ''
+ if 'Oracle Solaris' in data:
+ data = data.replace('Oracle ','')
+ ora_prefix = 'Oracle '
+ self.facts['distribution'] = data.split()[0]
+ self.facts['distribution_version'] = data.split()[1]
+ self.facts['distribution_release'] = ora_prefix + data
+ break
+ elif name == 'SuSE':
+ data = get_file_content(path)
+ if 'suse' in data.lower():
+ if path == '/etc/os-release':
+ release = re.search("PRETTY_NAME=[^(]+ \(?([^)]+?)\)", data)
+ if release:
+ self.facts['distribution_release'] = release.groups()[0]
+ break
+ elif path == '/etc/SuSE-release':
+ data = data.splitlines()
+ for line in data:
+ release = re.search('CODENAME *= *([^\n]+)', line)
+ if release:
+ self.facts['distribution_release'] = release.groups()[0].strip()
+ break
+ elif name == 'Debian':
+ data = get_file_content(path)
+ if 'Debian' in data:
+ release = re.search("PRETTY_NAME=[^(]+ \(?([^)]+?)\)", data)
+ if release:
+ self.facts['distribution_release'] = release.groups()[0]
+ break
+ elif name == 'Mandriva':
+ data = get_file_content(path)
+ if 'Mandriva' in data:
+ version = re.search('DISTRIB_RELEASE="(.*)"', data)
+ if version:
+ self.facts['distribution_version'] = version.groups()[0]
+ release = re.search('DISTRIB_CODENAME="(.*)"', data)
+ if release:
+ self.facts['distribution_release'] = release.groups()[0]
+ self.facts['distribution'] = name
+ break
else:
self.facts['distribution'] = name