Merge pull request #712 from GNS3/set_qemu_uuid

Set Qemu uuid for csr1000v
This commit is contained in:
Jeremy Grossmann 2016-10-04 20:55:11 -06:00 committed by GitHub
commit 46e1fbda60
2 changed files with 25 additions and 2 deletions

View File

@ -694,7 +694,7 @@ class QemuVM(BaseNode):
:param initrd: QEMU initrd path
"""
initrd = self.manager.get_abs_image_path(initrd)
initrd = self.manager.get_abs_image_path(initrd)
log.info('QEMU VM "{name}" [{id}] has set the QEMU initrd path to {initrd}'.format(name=self._name,
id=self._id,
@ -1480,6 +1480,7 @@ class QemuVM(BaseNode):
(to be passed to subprocess.Popen())
"""
additional_options = self._options.strip()
command = [self.qemu_path]
command.extend(["-name", self._name])
command.extend(["-m", "{}M".format(self._ram)])
@ -1496,6 +1497,8 @@ class QemuVM(BaseNode):
command.extend(cdrom_option)
command.extend((yield from self._disk_options()))
command.extend(self._linux_boot_options())
if "-uuid" not in additional_options:
command.extend(["-uuid", self._id])
if self._console_type == "telnet":
command.extend(self._serial_options())
elif self._console_type == "vnc":
@ -1505,7 +1508,6 @@ class QemuVM(BaseNode):
command.extend(self._monitor_options())
command.extend((yield from self._network_options()))
command.extend(self._graphic())
additional_options = self._options.strip()
if additional_options:
try:
command.extend(shlex.split(additional_options))

View File

@ -431,6 +431,8 @@ def test_build_command(vm, loop, fake_qemu_binary, port_manager):
"cpus=1",
"-boot",
"order=c",
"-uuid",
vm.id,
"-serial",
"telnet:127.0.0.1:{},server,nowait".format(vm.console),
"-net",
@ -440,6 +442,19 @@ def test_build_command(vm, loop, fake_qemu_binary, port_manager):
]
def test_build_command_manual_uuid(vm, loop, fake_qemu_binary, port_manager):
"""
If user has set a uuid we keep it
"""
vm.options = "-uuid e1c307a4-896f-11e6-81a5-3c07547807cc"
os.environ["DISPLAY"] = "0:0"
with asyncio_patch("asyncio.create_subprocess_exec", return_value=MagicMock()) as process:
cmd = loop.run_until_complete(asyncio.async(vm._build_command()))
assert "e1c307a4-896f-11e6-81a5-3c07547807cc" in cmd
assert vm.id not in cmd
def test_build_command_kvm(linux_platform, vm, loop, fake_qemu_binary, port_manager):
"""
Qemu 2.4 introduce an issue with KVM
@ -460,6 +475,8 @@ def test_build_command_kvm(linux_platform, vm, loop, fake_qemu_binary, port_mana
"-enable-kvm",
"-boot",
"order=c",
"-uuid",
vm.id,
"-serial",
"telnet:127.0.0.1:{},server,nowait".format(vm.console),
"-net",
@ -491,6 +508,8 @@ def test_build_command_kvm_2_4(linux_platform, vm, loop, fake_qemu_binary, port_
"smm=off",
"-boot",
"order=c",
"-uuid",
vm.id,
"-serial",
"telnet:127.0.0.1:{},server,nowait".format(vm.console),
"-net",
@ -525,6 +544,8 @@ def test_build_command_two_adapters(vm, loop, fake_qemu_binary, port_manager):
"cpus=1",
"-boot",
"order=c",
"-uuid",
vm.id,
"-serial",
"telnet:127.0.0.1:{},server,nowait".format(vm.console),
"-net",