| Server IP : 61.19.30.66 / Your IP : 216.73.216.15 Web Server : Apache/2.2.22 (Ubuntu) System : Linux klw 3.11.0-15-generic #25~precise1-Ubuntu SMP Thu Jan 30 17:39:31 UTC 2014 x86_64 User : www-data ( 33) PHP Version : 5.3.10-1ubuntu3.48 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, MySQL : ON | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /usr/share/pyshared/landscape/lib/ |
Upload File : |
"""
Network introspection utilities using ioctl and the /proc filesystem.
"""
import os
from landscape.lib.fs import read_file
def get_vm_info(root_path="/"):
"""
This is a utility that returns the virtualization type
It loops through some possible configurations and return a string with
the name of the technology being used or None if there's no match
"""
def join_root_path(path):
return os.path.join(root_path, path)
xen_paths = ["proc/sys/xen", "proc/xen"]
xen_paths = map(join_root_path, xen_paths)
vz_path = join_root_path("proc/vz")
if os.path.exists(vz_path):
return "openvz"
elif filter(os.path.exists, xen_paths):
return "xen"
# /sys/bus/xen exists on most machines, but only virtual machines have
# devices
sys_xen_path = join_root_path("sys/bus/xen/devices")
if os.path.isdir(sys_xen_path) and os.listdir(sys_xen_path):
return "xen"
has_hypervisor_flag = False
cpu_info_path = join_root_path("proc/cpuinfo")
if os.path.exists(cpu_info_path):
content = read_file(cpu_info_path)
for line in content.split("\n"):
if line.startswith("flags") and "hypervisor" in line:
has_hypervisor_flag = True
break
if not has_hypervisor_flag:
return ""
sys_vendor_path = join_root_path("sys/class/dmi/id/sys_vendor")
if not os.path.exists(sys_vendor_path):
return ""
content = read_file(sys_vendor_path)
if "VMware, Inc." in content:
return "vmware"
elif "Microsoft Corporation" in content:
return "hyperv"
elif "Bochs" in content or "OpenStack" in content:
return "kvm"
return ""