more ways to detect lxc

thanks to @wAmpire for new method and pointing out limitations of existing
pull/16824/merge
Brian Coca 8 years ago
parent 321d2e8cee
commit 54c530a3ee

@ -2973,19 +2973,19 @@ class LinuxVirtual(Virtual):
# For more information, check: http://people.redhat.com/~rjones/virt-what/ # For more information, check: http://people.redhat.com/~rjones/virt-what/
def get_virtual_facts(self): def get_virtual_facts(self):
# old lxc/docker # lxc/docker
if os.path.exists('/proc/1/cgroup'): if os.path.exists('/proc/1/cgroup'):
for line in get_file_lines('/proc/1/cgroup'): for line in get_file_lines('/proc/1/cgroup'):
if re.search(r'/docker(/|-[0-9a-f]+\.scope)', line): if re.search(r'/docker(/|-[0-9a-f]+\.scope)', line):
self.facts['virtualization_type'] = 'docker' self.facts['virtualization_type'] = 'docker'
self.facts['virtualization_role'] = 'guest' self.facts['virtualization_role'] = 'guest'
return return
if re.search('/lxc/', line): if re.search('/lxc/', line) or re.search('/machine.slice/machine-lxc', line):
self.facts['virtualization_type'] = 'lxc' self.facts['virtualization_type'] = 'lxc'
self.facts['virtualization_role'] = 'guest' self.facts['virtualization_role'] = 'guest'
return return
# newer lxc does not appear in cgroups anymore but sets 'container=lxc' environment var # lxc does not always appear in cgroups anymore but sets 'container=lxc' environment var, requires root privs
if os.path.exists('/proc/1/environ'): if os.path.exists('/proc/1/environ'):
for line in get_file_lines('/proc/1/environ'): for line in get_file_lines('/proc/1/environ'):
if re.search('container=lxc', line): if re.search('container=lxc', line):

Loading…
Cancel
Save