facts: detect FreeBSD KVM guests (#50030)

Fixes: #49158
pull/50113/head
Martin Krizek 6 years ago committed by Jordan Borean
parent 29c3bb48e9
commit 545edc9114

@ -0,0 +1,2 @@
bugfixes:
- Detect FreeBSD KVM guests in facts (https://github.com/ansible/ansible/issues/49158)

@ -19,9 +19,10 @@ __metaclass__ = type
import os
from ansible.module_utils.facts.virtual.base import Virtual, VirtualCollector
from ansible.module_utils.facts.virtual.sysctl import VirtualSysctlDetectionMixin
class FreeBSDVirtual(Virtual):
class FreeBSDVirtual(Virtual, VirtualSysctlDetectionMixin):
"""
This is a FreeBSD-specific subclass of Virtual. It defines
- virtualization_type
@ -39,6 +40,14 @@ class FreeBSDVirtual(Virtual):
virtual_facts['virtualization_type'] = 'xen'
virtual_facts['virtualization_role'] = 'guest'
if virtual_facts['virtualization_type'] == '':
virtual_product_facts = self.detect_virt_product('kern.vm_guest') or self.detect_virt_product('hw.hv_vendor')
virtual_facts.update(virtual_product_facts)
if virtual_facts['virtualization_type'] == '':
virtual_vendor_facts = self.detect_virt_vendor('hw.model')
virtual_facts.update(virtual_vendor_facts)
return virtual_facts

@ -30,7 +30,7 @@ class VirtualSysctlDetectionMixin(object):
if self.sysctl_path:
rc, out, err = self.module.run_command("%s -n %s" % (self.sysctl_path, key))
if rc == 0:
if re.match('(KVM|Bochs|SmartDC).*', out):
if re.match('(KVM|kvm|Bochs|SmartDC).*', out):
virtual_product_facts['virtualization_type'] = 'kvm'
virtual_product_facts['virtualization_role'] = 'guest'
elif re.match('.*VMware.*', out):

Loading…
Cancel
Save