From ab524692c4198c2a3dedac57063415a93510ceca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ronny=20L=C3=B8ken?= Date: Tue, 26 Jul 2022 14:54:03 +0200 Subject: [PATCH 1/2] Update core.py Properly detecting Nutanix AHV as virtual with virt-what. --- salt/grains/core.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/salt/grains/core.py b/salt/grains/core.py index debbeb257d6f..44a977fc6e5d 100644 --- a/salt/grains/core.py +++ b/salt/grains/core.py @@ -877,6 +877,9 @@ def _virtual(osdata): elif "hyperv" in line: grains["virtual"] = "HyperV" break + elif "nutanix_ahv" in line: + grains["virtual"] = "Nutanix" + break break elif command == "dmidecode": # Product Name: VirtualBox From 9faf6dfd808fa2c5326644479572e59ce3ecadda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ronny=20L=C3=B8ken?= Date: Wed, 3 Aug 2022 21:51:14 +0200 Subject: [PATCH 2/2] Nutanix AHV added to grains.virtual on several guest OS'es --- salt/grains/core.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/salt/grains/core.py b/salt/grains/core.py index 4c5b5baad316..858ba8aa2424 100644 --- a/salt/grains/core.py +++ b/salt/grains/core.py @@ -724,6 +724,9 @@ def _windows_virtual(osdata): elif "CloudStack KVM Hypervisor" in productname: grains["virtual"] = "kvm" grains["virtual_subtype"] = "cloudstack" + # Nutanix AHV + elif "AHV" in productname: + grains["virtual"] = "Nutanix" return grains @@ -747,10 +750,12 @@ def _virtual(osdata): # list of commands to be executed to determine the 'virtual' grain _cmds = ["systemd-detect-virt", "virt-what", "dmidecode"] # test first for virt-what, which covers most of the desired functionality - # on most platforms + # on most platforms. next, test for dmidecode. if not salt.utils.platform.is_windows() and osdata["kernel"] not in skip_cmds: if salt.utils.path.which("virt-what"): _cmds = ["virt-what"] + elif salt.utils.path.which("dmidecode"): + _cmds = ["dmidecode"] # Check if enable_lspci is True or False if __opts__.get("enable_lspci", True) is True: @@ -878,6 +883,7 @@ def _virtual(osdata): elif "hyperv" in line: grains["virtual"] = "HyperV" break + # Nutanix AHV elif "nutanix_ahv" in line: grains["virtual"] = "Nutanix" break @@ -918,6 +924,9 @@ def _virtual(osdata): grains["virtual"] = "Parallels" elif "Manufacturer: Google" in output: grains["virtual"] = "kvm" + # Nutanix AHV + elif "Manufacturer: Nutanix" in output: + grains["virtual"] = "Nutanix" # Proxmox KVM elif "Vendor: SeaBIOS" in output: grains["virtual"] = "kvm" @@ -935,6 +944,9 @@ def _virtual(osdata): grains["virtual"] = "VirtualBox" elif "qemu" in model: grains["virtual"] = "kvm" + # Nutanix AHV + elif "nutanix" in model: + grains["virtual"] = "Nutanix" elif "virtio" in model: grains["virtual"] = "kvm" # Break out of the loop so the next log message is not issued @@ -1058,6 +1070,9 @@ def _virtual(osdata): grains["virtual"] = "gce" elif "BHYVE" in output: grains["virtual"] = "bhyve" + # Nutanix AHV + elif "AHV" in output: + grains["virtual"] = "Nutanix" except UnicodeDecodeError: # Some firmwares provide non-valid 'product_name' # files, ignore them