summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Doran <sdoran@redhat.com>2021-02-05 15:49:59 -0500
committerGitHub <noreply@github.com>2021-02-05 14:49:59 -0600
commit3361517fa964222128e232eec20107b3b6547b70 (patch)
tree3dc3da78fd964a8adc20ad2a57033d4f010a3f41
parent4290d704b10b7033367ef060b59c8684ad1cca7f (diff)
downloadansible-3361517fa964222128e232eec20107b3b6547b70.tar.gz
[stable-2.9] facts - properly report virtualization facts for Linux guests on bhyve (#73204). (#73234)
(cherry picked from commit df451636e74fe6f0021a5555392f84c2bf194432) Co-authored-by: Sam Doran <sdoran@redhat.com>
-rw-r--r--changelogs/fragments/73167-bhyve-facts.yml2
-rw-r--r--lib/ansible/module_utils/facts/virtual/linux.py5
-rw-r--r--test/units/module_utils/facts/virtual/__init__.py0
-rw-r--r--test/units/module_utils/facts/virtual/test_linux.py26
4 files changed, 33 insertions, 0 deletions
diff --git a/changelogs/fragments/73167-bhyve-facts.yml b/changelogs/fragments/73167-bhyve-facts.yml
new file mode 100644
index 0000000000..d9f6d0fc90
--- /dev/null
+++ b/changelogs/fragments/73167-bhyve-facts.yml
@@ -0,0 +1,2 @@
+bugfixes:
+ - facts - properly report virtualization facts for Linux guests running on bhyve (https://github.com/ansible/ansible/issues/73167)
diff --git a/lib/ansible/module_utils/facts/virtual/linux.py b/lib/ansible/module_utils/facts/virtual/linux.py
index e8a5587705..65e828b741 100644
--- a/lib/ansible/module_utils/facts/virtual/linux.py
+++ b/lib/ansible/module_utils/facts/virtual/linux.py
@@ -230,6 +230,11 @@ class LinuxVirtual(Virtual):
virtual_facts['virtualization_role'] = 'guest'
return virtual_facts
+ if 'BHYVE' in out:
+ virtual_facts['virtualization_type'] = 'bhyve'
+ virtual_facts['virtualization_role'] = 'guest'
+ return virtual_facts
+
# If none of the above matches, return 'NA' for virtualization_type
# and virtualization_role. This allows for proper grouping.
virtual_facts['virtualization_type'] = 'NA'
diff --git a/test/units/module_utils/facts/virtual/__init__.py b/test/units/module_utils/facts/virtual/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/units/module_utils/facts/virtual/__init__.py
diff --git a/test/units/module_utils/facts/virtual/test_linux.py b/test/units/module_utils/facts/virtual/test_linux.py
new file mode 100644
index 0000000000..d534478c5a
--- /dev/null
+++ b/test/units/module_utils/facts/virtual/test_linux.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+# Copyright (c) 2020 Ansible Project
+# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
+
+from __future__ import absolute_import, division, print_function
+__metaclass__ = type
+
+from ansible.module_utils.facts.virtual import linux
+
+
+def test_get_virtual_facts_bhyve(mocker):
+ mocker.patch('os.path.exists', return_value=False)
+ mocker.patch('ansible.module_utils.facts.virtual.linux.get_file_content', return_value='')
+ mocker.patch('ansible.module_utils.facts.virtual.linux.get_file_lines', return_value=[])
+
+ module = mocker.Mock()
+ module.run_command.return_value = (0, 'BHYVE\n', '')
+ inst = linux.LinuxVirtual(module)
+
+ facts = inst.get_virtual_facts()
+ expected = {
+ 'virtualization_role': 'guest',
+ 'virtualization_type': 'bhyve',
+ }
+
+ assert facts == expected