Skip to content
Snippets Groups Projects
Commit 0611e6dd authored by Nikos Skalkotos's avatar Nikos Skalkotos
Browse files

Fix multiple bugs in util.get_kvm_binary

The machine hardware name fetched by `uname -m' should have been
stripped, and a --enable-kvm option should be added if the returned
executable was qemu-system-<arch>
parent df36e2a4
No related branches found
No related tags found
No related merge requests found
......@@ -768,18 +768,21 @@ class _VM(object):
# Use ganeti's VNC port range for a random vnc port
self.display = random.randint(11000, 14999) - 5900
kvm = get_kvm_binary()
kvm, needed_args = get_kvm_binary()
if kvm is None:
FatalError("Can't find the kvm binary")
args = [
kvm, '-smp', '1', '-m', '1024', '-drive',
args = [kvm]
args.extend(needed_args)
args.extend([
'-smp', '1', '-m', '1024', '-drive',
'file=%s,format=raw,cache=unsafe,if=virtio' % self.disk,
'-netdev', 'type=user,hostfwd=tcp::445-:445,id=netdev0',
'-device', 'virtio-net-pci,mac=%s,netdev=netdev0' % random_mac(),
'-vnc', ':%d' % self.display, '-serial', 'file:%s' % self.serial,
'-monitor', 'stdio']
'-monitor', 'stdio'])
self.process = subprocess.Popen(args, stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
......
......@@ -65,21 +65,23 @@ def get_command(command):
def get_kvm_binary():
"""Returns the path to the kvm binary"""
"""Returns the path to the kvm binary and some extra arguments if needed"""
uname = get_command('uname')
which = get_command('which')
machine = str(uname('-m'))
machine = str(uname('-m')).strip()
if re.match('i[3-6]86', machine):
machine = 'i386'
binary = which('qemu-system-%s' % machine)
needed_args = "--enable-kvm",
if binary is None:
return which('kvm')
return which('kvm'), tuple()
return binary
return binary, needed_args
def try_fail_repeat(command, *args):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment