simplify vm_guest detection code (#49378)
- remove a lot of repetition - change lists to tuples since they are faster to assignpull/4420/head
parent
42a13d15f1
commit
e53a7856f6
|
@ -0,0 +1,2 @@
|
|||
bugfixes:
|
||||
- simple code collapse, avoid a lot of repetition
|
|
@ -80,87 +80,63 @@ class LinuxVirtual(Virtual):
|
|||
pass
|
||||
return virtual_facts
|
||||
|
||||
# assume guest for this block
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
|
||||
product_name = get_file_content('/sys/devices/virtual/dmi/id/product_name')
|
||||
|
||||
if product_name in ['KVM', 'Bochs']:
|
||||
if product_name in ('KVM', 'Bochs'):
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if product_name == 'RHEV Hypervisor':
|
||||
virtual_facts['virtualization_type'] = 'RHEV'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if product_name in ['VMware Virtual Platform', 'VMware7,1']:
|
||||
if product_name in ('VMware Virtual Platform', 'VMware7,1'):
|
||||
virtual_facts['virtualization_type'] = 'VMware'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if product_name in ['OpenStack Compute', 'OpenStack Nova']:
|
||||
if product_name in ('OpenStack Compute', 'OpenStack Nova'):
|
||||
virtual_facts['virtualization_type'] = 'openstack'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
bios_vendor = get_file_content('/sys/devices/virtual/dmi/id/bios_vendor')
|
||||
|
||||
if bios_vendor == 'Xen':
|
||||
virtual_facts['virtualization_type'] = 'xen'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if bios_vendor == 'innotek GmbH':
|
||||
virtual_facts['virtualization_type'] = 'virtualbox'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if bios_vendor in ['Amazon EC2', 'Hetzner']:
|
||||
if bios_vendor in ('Amazon EC2', 'Hetzner'):
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
sys_vendor = get_file_content('/sys/devices/virtual/dmi/id/sys_vendor')
|
||||
|
||||
KVM_SYS_VENDORS = ('QEMU', 'oVirt', 'Amazon EC2', 'Google', 'Scaleway')
|
||||
if sys_vendor in KVM_SYS_VENDORS:
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
return virtual_facts
|
||||
|
||||
# FIXME: This does also match hyperv
|
||||
if sys_vendor == 'Microsoft Corporation':
|
||||
virtual_facts['virtualization_type'] = 'VirtualPC'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'Parallels Software International Inc.':
|
||||
virtual_facts['virtualization_type'] = 'parallels'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'QEMU':
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'oVirt':
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'OpenStack Foundation':
|
||||
virtual_facts['virtualization_type'] = 'openstack'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'Amazon EC2':
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'Google':
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
|
||||
if sys_vendor == 'Scaleway':
|
||||
virtual_facts['virtualization_type'] = 'kvm'
|
||||
virtual_facts['virtualization_role'] = 'guest'
|
||||
return virtual_facts
|
||||
# unassume guest
|
||||
del virtual_facts['virtualization_role']
|
||||
|
||||
if os.path.exists('/proc/self/status'):
|
||||
for line in get_file_lines('/proc/self/status'):
|
||||
|
|
Loading…
Reference in New Issue