summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Nečas <necas.marty@gmail.com>2021-08-04 22:27:21 +0200
committerGitHub <noreply@github.com>2021-08-04 15:27:21 -0500
commit93070d5dc680435a35e522bae95f7fbe4913cc70 (patch)
tree302fbd3cde4594dd45ee2ea0e6895644803dee24
parent46819a65fa309dad7349c9dd325532f0a9c576ae (diff)
downloadansible-93070d5dc680435a35e522bae95f7fbe4913cc70.tar.gz
Backport 2.10: Setup virtualization_facts - add RHV and oVirt type (#73905)
* Setup virtualization_facts - add RHV and oVirt type Signed-off-by: mnecas <necas.marty@gmail.com> * initialize sys_vendor only once * add changelog * Update 72876-setup-facts-add-redhat-vendor.yml * Update linux.py
-rw-r--r--changelogs/fragments/72876-setup-facts-add-redhat-vendor.yml2
-rw-r--r--lib/ansible/module_utils/facts/virtual/linux.py18
2 files changed, 15 insertions, 5 deletions
diff --git a/changelogs/fragments/72876-setup-facts-add-redhat-vendor.yml b/changelogs/fragments/72876-setup-facts-add-redhat-vendor.yml
new file mode 100644
index 0000000000..d28315a6a5
--- /dev/null
+++ b/changelogs/fragments/72876-setup-facts-add-redhat-vendor.yml
@@ -0,0 +1,2 @@
+bugfixes:
+- "Setup virtualization_facts - add RHV and oVirt type. This change will fully work for VMs in clusters at cluster level 4.4 or newer (https://github.com/ansible/ansible/pull/72876)."
diff --git a/lib/ansible/module_utils/facts/virtual/linux.py b/lib/ansible/module_utils/facts/virtual/linux.py
index 5722e462b3..1782dbdfac 100644
--- a/lib/ansible/module_utils/facts/virtual/linux.py
+++ b/lib/ansible/module_utils/facts/virtual/linux.py
@@ -92,15 +92,25 @@ class LinuxVirtual(Virtual):
virtual_facts['virtualization_role'] = 'guest'
product_name = get_file_content('/sys/devices/virtual/dmi/id/product_name')
+ sys_vendor = get_file_content('/sys/devices/virtual/dmi/id/sys_vendor')
+ product_family = get_file_content('/sys/devices/virtual/dmi/id/product_family')
if product_name in ('KVM', 'KVM Server', 'Bochs', 'AHV'):
virtual_facts['virtualization_type'] = 'kvm'
return virtual_facts
- if product_name == 'RHEV Hypervisor':
- virtual_facts['virtualization_type'] = 'RHEV'
+ if sys_vendor == 'oVirt':
+ virtual_facts['virtualization_type'] = 'oVirt'
return virtual_facts
+ if sys_vendor == 'Red Hat':
+ if product_family == 'RHV':
+ virtual_facts['virtualization_type'] = 'RHV'
+ return virtual_facts
+ elif product_name == 'RHEV Hypervisor':
+ virtual_facts['virtualization_type'] = 'RHEV'
+ return virtual_facts
+
if product_name in ('VMware Virtual Platform', 'VMware7,1'):
virtual_facts['virtualization_type'] = 'VMware'
return virtual_facts
@@ -123,9 +133,7 @@ class LinuxVirtual(Virtual):
virtual_facts['virtualization_type'] = 'kvm'
return virtual_facts
- sys_vendor = get_file_content('/sys/devices/virtual/dmi/id/sys_vendor')
-
- KVM_SYS_VENDORS = ('QEMU', 'oVirt', 'Amazon EC2', 'DigitalOcean', 'Google', 'Scaleway', 'Nutanix')
+ KVM_SYS_VENDORS = ('QEMU', 'Amazon EC2', 'DigitalOcean', 'Google', 'Scaleway', 'Nutanix')
if sys_vendor in KVM_SYS_VENDORS:
virtual_facts['virtualization_type'] = 'kvm'
return virtual_facts