simplify vm_guest detection code (#49378)

- remove a lot of repetition
  - change lists to tuples since they are faster to assign
pull/27859/head
Brian Coca 6 years ago committed by GitHub
parent 42a13d15f1
commit e53a7856f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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…
Cancel
Save