virt.virt_test_utils: run_autotest - 'tar' needs relative paths to strip the leading '/'
[autotest-zwu.git] / client / bin / kvm_control.py
blob017cacb1f9f360da6181f9dfbeea2b430a6d259e
1 """
2 Utilities useful to client control files that test KVM.
3 """
5 from autotest_lib.client.bin import utils
6 from autotest_lib.client.common_lib import error
8 def get_kvm_arch():
9 """
10 Determines the kvm architecture kernel module that should be loaded.
12 @return: "kvm_amd", "kvm_intel", or raise TestError exception
13 """
14 arch_type = ""
15 for line in open("/proc/cpuinfo"):
16 if arch_type == "":
17 if "AuthenticAMD" in line:
18 arch_type = "kvm_amd"
19 elif "GenuineIntel" in line:
20 arch_type = "kvm_intel"
21 elif "flags" in line:
22 if arch_type == "kvm_amd" and "svm" in line:
23 return arch_type
24 if arch_type == "kvm_intel" and "vmx" in line:
25 return arch_type
26 raise error.TestError("CPU Must be AMD or Intel, and must be KVM ready.")
29 def load_kvm():
30 """
31 Loads the appropriate KVM kernel modules
32 """
33 kvm_status = utils.system('modprobe kvm')
34 kvm_amdintel_status = utils.system("modprobe " + kvm_arch)
35 if kvm_status:
36 return kvm_status
37 else:
38 return kvm_amdintel_status
40 def unload_kvm():
41 """
42 Unloads the appropriate KVM kernel modules
43 """
44 kvm_amdintel_status = utils.system("rmmod " + kvm_arch)
45 kvm_status = utils.system('rmmod kvm')
46 if kvm_status:
47 return kvm_status
48 else:
49 return kvm_amdintel_status
52 kvm_arch = get_kvm_arch()