diff options
author | Phil Wise <phil@advancedtelematic.com> | 2017-11-16 11:01:25 +0100 |
---|---|---|
committer | Phil Wise <phil@advancedtelematic.com> | 2017-11-16 11:07:49 +0100 |
commit | 24e5a6d45886365cecce74c2c9aa1cfd8c0da69a (patch) | |
tree | 2c296be453e262a347d4914d2359e7e298c1f3e2 | |
parent | 0b1fd4b3c456a64e40a7ff1125f005c0b72eafd8 (diff) | |
download | meta-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.py | 4 | ||||
-rw-r--r-- | scripts/qemucommand.py | 11 | ||||
-rwxr-xr-x | scripts/run-qemu-ota | 6 |
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 | |||
2 | from os import listdir | 2 | from os import listdir |
3 | import random | 3 | import random |
4 | import socket | 4 | import socket |
5 | from subprocess import check_output, CalledProcessError | ||
5 | 6 | ||
6 | EXTENSIONS = { | 7 | EXTENSIONS = { |
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') |