From b0f74c2a5e9b1c4c958190efdffba96f539179d7 Mon Sep 17 00:00:00 2001 From: grossmj Date: Wed, 10 Jul 2019 15:40:11 +0200 Subject: [PATCH] Fix issue when trying to rename a Dynamips node that is already powered on. Fixes #2824 --- gns3server/compute/dynamips/nodes/router.py | 3 ++- gns3server/controller/node.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gns3server/compute/dynamips/nodes/router.py b/gns3server/compute/dynamips/nodes/router.py index d7472a46..e97a33ba 100644 --- a/gns3server/compute/dynamips/nodes/router.py +++ b/gns3server/compute/dynamips/nodes/router.py @@ -1525,6 +1525,8 @@ class Router(BaseNode): :param new_name: new name string """ + await self._hypervisor.send('vm rename "{name}" "{new_name}"'.format(name=self._name, new_name=new_name)) + # change the hostname in the startup-config if os.path.isfile(self.startup_config_path): try: @@ -1547,7 +1549,6 @@ class Router(BaseNode): except OSError as e: raise DynamipsError("Could not amend the configuration {}: {}".format(self.private_config_path, e)) - await self._hypervisor.send('vm rename "{name}" "{new_name}"'.format(name=self._name, new_name=new_name)) log.info('Router "{name}" [{id}]: renamed to "{new_name}"'.format(name=self._name, id=self._id, new_name=new_name)) self._name = new_name diff --git a/gns3server/controller/node.py b/gns3server/controller/node.py index 1b9f8eaf..c50aad9f 100644 --- a/gns3server/controller/node.py +++ b/gns3server/controller/node.py @@ -388,7 +388,6 @@ class Node: # When updating properties used only on controller we don't need to call the compute update_compute = False - old_json = self.__json__() compute_properties = None @@ -402,6 +401,8 @@ class Node: if prop == "properties": compute_properties = kwargs[prop] else: + if prop == "name" and self.node_type == "dynamips" and self.status == "started": + raise aiohttp.web.HTTPConflict(text="Sorry, it is not possible rename of a Dynamips node that is already powered on") setattr(self, prop, kwargs[prop]) if compute_properties and "custom_adapters" in compute_properties: