diff options
author | Martin Nečas <necas.marty@gmail.com> | 2021-08-04 22:27:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-04 15:27:21 -0500 |
commit | 93070d5dc680435a35e522bae95f7fbe4913cc70 (patch) | |
tree | 302fbd3cde4594dd45ee2ea0e6895644803dee24 | |
parent | 46819a65fa309dad7349c9dd325532f0a9c576ae (diff) | |
download | ansible-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.yml | 2 | ||||
-rw-r--r-- | lib/ansible/module_utils/facts/virtual/linux.py | 18 |
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 |