summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Wise <phil@advancedtelematic.com>2017-11-16 11:01:25 +0100
committerPhil Wise <phil@advancedtelematic.com>2017-11-16 11:07:49 +0100
commit24e5a6d45886365cecce74c2c9aa1cfd8c0da69a (patch)
tree2c296be453e262a347d4914d2359e7e298c1f3e2
parent0b1fd4b3c456a64e40a7ff1125f005c0b72eafd8 (diff)
downloadmeta-updater-24e5a6d45886365cecce74c2c9aa1cfd8c0da69a.tar.gz
Autodetect KVM
Autodetect KVM by using the 'kvm-ok' command line tool. This has two benefits: Firstly, it improves the UX of run-qemu-ota when working on machines without KVM (e.g. AWS). Previously, people had to use the --no-kvm option in these cases. Secondary, it makes oe-selftest usable on machines without KVM. Our tests call run-qemu-ota, and we want to able to run them on machines without KVM.
-rw-r--r--lib/oeqa/selftest/updater.py4
-rw-r--r--scripts/qemucommand.py11
-rwxr-xr-xscripts/run-qemu-ota6
3 files changed, 17 insertions, 4 deletions
diff --git a/lib/oeqa/selftest/updater.py b/lib/oeqa/selftest/updater.py
index 6339e6e..eb09302 100644
--- a/lib/oeqa/selftest/updater.py
+++ b/lib/oeqa/selftest/updater.py
@@ -97,12 +97,12 @@ class GeneralTests(oeSelfTest):
97 args = type('', (), {})() 97 args = type('', (), {})()
98 args.imagename = 'core-image-minimal' 98 args.imagename = 'core-image-minimal'
99 args.mac = None 99 args.mac = None
100 # Could use DEPLOY_DIR_IMAGE her but it's already in the machine 100 # Could use DEPLOY_DIR_IMAGE here but it's already in the machine
101 # subdirectory. 101 # subdirectory.
102 args.dir = 'tmp/deploy/images' 102 args.dir = 'tmp/deploy/images'
103 args.efi = False 103 args.efi = False
104 args.machine = None 104 args.machine = None
105 args.no_kvm = False 105 args.kvm = None # Autodetect
106 args.no_gui = True 106 args.no_gui = True
107 args.gdb = False 107 args.gdb = False
108 args.pcap = None 108 args.pcap = None
diff --git a/scripts/qemucommand.py b/scripts/qemucommand.py
index a75ffb6..82a9540 100644
--- a/scripts/qemucommand.py
+++ b/scripts/qemucommand.py
@@ -2,6 +2,7 @@ from os.path import exists, join, realpath, abspath
2from os import listdir 2from os import listdir
3import random 3import random
4import socket 4import socket
5from subprocess import check_output, CalledProcessError
5 6
6EXTENSIONS = { 7EXTENSIONS = {
7 'intel-corei7-64': 'wic', 8 'intel-corei7-64': 'wic',
@@ -67,7 +68,15 @@ class QemuCommand(object):
67 self.mac_address = random_mac() 68 self.mac_address = random_mac()
68 self.serial_port = find_local_port(8990) 69 self.serial_port = find_local_port(8990)
69 self.ssh_port = find_local_port(2222) 70 self.ssh_port = find_local_port(2222)
70 self.kvm = not args.no_kvm 71 if args.kvm is None:
72 # Autodetect KVM using 'kvm-ok'
73 try:
74 check_output(['kvm-ok'])
75 self.kvm = True
76 except CalledProcessError:
77 self.kvm = False
78 else:
79 self.kvm = args.kvm
71 self.gui = not args.no_gui 80 self.gui = not args.no_gui
72 self.gdb = args.gdb 81 self.gdb = args.gdb
73 self.pcap = args.pcap 82 self.pcap = args.pcap
diff --git a/scripts/run-qemu-ota b/scripts/run-qemu-ota
index 8e25197..56e4fbc 100755
--- a/scripts/run-qemu-ota
+++ b/scripts/run-qemu-ota
@@ -21,7 +21,11 @@ def main():
21 'OSTREE_BOOTLOADER = "grub" and OVMF.fd firmware to be installed (try "apt install ovmf")', 21 'OSTREE_BOOTLOADER = "grub" and OVMF.fd firmware to be installed (try "apt install ovmf")',
22 action='store_true') 22 action='store_true')
23 parser.add_argument('--machine', default=None, help="Target MACHINE") 23 parser.add_argument('--machine', default=None, help="Target MACHINE")
24 parser.add_argument('--no-kvm', help='Disable KVM in QEMU', action='store_true') 24 kvm_group = parser.add_argument_group()
25 kvm_group.add_argument('--force-kvm', help='Force use of KVM (default is to autodetect)',
26 dest='kvm', action='store_true', default=None)
27 kvm_group.add_argument('--no-kvm', help='Disable KVM in QEMU',
28 dest='kvm', action='store_false')
25 parser.add_argument('--no-gui', help='Disable GUI', action='store_true') 29 parser.add_argument('--no-gui', help='Disable GUI', action='store_true')
26 parser.add_argument('--gdb', help='Export gdbserver port 2159 from the image', action='store_true') 30 parser.add_argument('--gdb', help='Export gdbserver port 2159 from the image', action='store_true')
27 parser.add_argument('--pcap', default=None, help='Dump all network traffic') 31 parser.add_argument('--pcap', default=None, help='Dump all network traffic')