From 580693b1ecf53ea209e05980b70d9513d2c01fe7 Mon Sep 17 00:00:00 2001 From: Julien Duponchelle Date: Mon, 30 Jan 2017 15:19:46 +0100 Subject: [PATCH] Prevent renaming of a running VirtualBox linked VM Fix https://github.com/GNS3/gns3-gui/issues/1816 --- gns3server/compute/virtualbox/virtualbox_vm.py | 2 ++ tests/compute/virtualbox/test_virtualbox_vm.py | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/gns3server/compute/virtualbox/virtualbox_vm.py b/gns3server/compute/virtualbox/virtualbox_vm.py index 7cd121ce..93391b8d 100644 --- a/gns3server/compute/virtualbox/virtualbox_vm.py +++ b/gns3server/compute/virtualbox/virtualbox_vm.py @@ -604,6 +604,8 @@ class VirtualBoxVM(BaseNode): """ if self.linked_clone: + if self.status == "started": + raise VirtualBoxError("You can't change the name of running VM {}".format(self._name)) yield from self._modify_vm('--name "{}"'.format(vmname)) log.info("VirtualBox VM '{name}' [{id}] has set the VM name to '{vmname}'".format(name=self.name, id=self.id, vmname=vmname)) diff --git a/tests/compute/virtualbox/test_virtualbox_vm.py b/tests/compute/virtualbox/test_virtualbox_vm.py index 9a5543ed..7614167c 100644 --- a/tests/compute/virtualbox/test_virtualbox_vm.py +++ b/tests/compute/virtualbox/test_virtualbox_vm.py @@ -44,6 +44,17 @@ def test_vm(project, manager): assert vm.vmname == "test" +def test_rename_vmname(project, manager, async_run): + """ + Rename a VM is not allowed when using linked clone + """ + vm = VirtualBoxVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", project, manager, "test", False) + vm._node_status = "started" + vm._linked_clone = True + with pytest.raises(VirtualBoxError): + async_run(vm.set_vmname("toto")) + + def test_vm_valid_virtualbox_api_version(loop, project, manager): with asyncio_patch("gns3server.compute.virtualbox.VirtualBox.execute", return_value=["API version: 4_3"]): vm = VirtualBoxVM("test", "00010203-0405-0607-0809-0a0b0c0d0e0f", project, manager, "test", False)