diff --git a/gns3server/modules/dynamips/__init__.py b/gns3server/modules/dynamips/__init__.py index 72027af0..531ce361 100644 --- a/gns3server/modules/dynamips/__init__.py +++ b/gns3server/modules/dynamips/__init__.py @@ -118,7 +118,8 @@ class Dynamips(IModule): """ # stop all Dynamips hypervisors - self._hypervisor_manager.stop_all_hypervisors() + if self._hypervisor_manager: + self._hypervisor_manager.stop_all_hypervisors() # resets the instance counters Router.reset() diff --git a/gns3server/modules/dynamips/hypervisor_manager.py b/gns3server/modules/dynamips/hypervisor_manager.py index f675f070..ebb27b33 100644 --- a/gns3server/modules/dynamips/hypervisor_manager.py +++ b/gns3server/modules/dynamips/hypervisor_manager.py @@ -472,7 +472,7 @@ class HypervisorManager(object): hypervisor.port, current_memory_load, router_ram)) - return hypervisor + return hypervisor hypervisor = self.start_new_hypervisor() hypervisor.image_ref = router_ios_image diff --git a/gns3server/modules/dynamips/nodes/atm_bridge.py b/gns3server/modules/dynamips/nodes/atm_bridge.py index 1028249f..b2f41691 100644 --- a/gns3server/modules/dynamips/nodes/atm_bridge.py +++ b/gns3server/modules/dynamips/nodes/atm_bridge.py @@ -51,6 +51,19 @@ class ATMBridge(object): return self._name[1:-1] # remove quotes + @name.setter + def name(self, new_name): + """ + Renames this ATM bridge. + + :param new_name: New name for this bridge + """ + + new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces + self._hypervisor.send("atm_bridge rename {name} {new_name}".format(name=self._name, + new_name=new_name)) + self._name = new_name + @property def hypervisor(self): """ @@ -90,18 +103,6 @@ class ATMBridge(object): return self._mapping - def rename(self, new_name): - """ - Renames this ATM bridge. - - :param new_name: New name for this bridge - """ - - new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces - self._hypervisor.send("atm_bridge rename {name} {new_name}".format(name=self._name, - new_name=new_name)) - self._name = new_name - def delete(self): """ Deletes this ATM bridge. diff --git a/gns3server/modules/dynamips/nodes/atm_switch.py b/gns3server/modules/dynamips/nodes/atm_switch.py index b689d62e..a428b5eb 100644 --- a/gns3server/modules/dynamips/nodes/atm_switch.py +++ b/gns3server/modules/dynamips/nodes/atm_switch.py @@ -86,6 +86,24 @@ class ATMSwitch(object): return self._name[1:-1] # remove quotes + @name.setter + def name(self, new_name): + """ + Renames this ATM switch. + + :param new_name: New name for this switch + """ + + new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces + self._hypervisor.send("atmsw rename {name} {new_name}".format(name=self._name, + new_name=new_name)) + + log.info("ATM switch {name} [id={id}]: renamed to {new_name}".format(name=self._name, + id=self._id, + new_name=new_name)) + + self._name = new_name + @property def hypervisor(self): """ @@ -125,23 +143,6 @@ class ATMSwitch(object): return self._mapping - def rename(self, new_name): - """ - Renames this ATM switch. - - :param new_name: New name for this switch - """ - - new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces - self._hypervisor.send("atmsw rename {name} {new_name}".format(name=self._name, - new_name=new_name)) - - log.info("ATM switch {name} [id={id}]: renamed to {new_name}".format(name=self._name, - id=self._id, - new_name=new_name)) - - self._name = new_name - def delete(self): """ Deletes this ATM switch. diff --git a/gns3server/modules/dynamips/nodes/bridge.py b/gns3server/modules/dynamips/nodes/bridge.py index aa2b7eb0..4e86d161 100644 --- a/gns3server/modules/dynamips/nodes/bridge.py +++ b/gns3server/modules/dynamips/nodes/bridge.py @@ -49,6 +49,20 @@ class Bridge(object): return self._name[1:-1] # remove quotes + @name.setter + def name(self, new_name): + """ + Renames this bridge. + + :param new_name: New name for this bridge + """ + + new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces + self._hypervisor.send("nio_bridge rename {name} {new_name}".format(name=self._name, + new_name=new_name)) + + self._name = new_name + @property def hypervisor(self): """ @@ -78,19 +92,6 @@ class Bridge(object): return self._nios - def rename(self, new_name): - """ - Renames this bridge. - - :param new_name: New name for this bridge - """ - - new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces - self._hypervisor.send("nio_bridge rename {name} {new_name}".format(name=self._name, - new_name=new_name)) - - self._name = new_name - def delete(self): """ Deletes this bridge. diff --git a/gns3server/modules/dynamips/nodes/ethernet_switch.py b/gns3server/modules/dynamips/nodes/ethernet_switch.py index 4f135b63..2d0ad406 100644 --- a/gns3server/modules/dynamips/nodes/ethernet_switch.py +++ b/gns3server/modules/dynamips/nodes/ethernet_switch.py @@ -87,6 +87,24 @@ class EthernetSwitch(object): return self._name[1:-1] # remove quotes + @name.setter + def name(self, new_name): + """ + Renames this Ethernet switch. + + :param new_name: New name for this switch + """ + + new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces + self._hypervisor.send("ethsw rename {name} {new_name}".format(name=self._name, + new_name=new_name)) + + log.info("Ethernet switch {name} [id={id}]: renamed to {new_name}".format(name=self._name, + id=self._id, + new_name=new_name)) + + self._name = new_name + @property def hypervisor(self): """ @@ -126,23 +144,6 @@ class EthernetSwitch(object): return self._mapping - def rename(self, new_name): - """ - Renames this Ethernet switch. - - :param new_name: New name for this switch - """ - - new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces - self._hypervisor.send("ethsw rename {name} {new_name}".format(name=self._name, - new_name=new_name)) - - log.info("Ethernet switch {name} [id={id}]: renamed to {new_name}".format(name=self._name, - id=self._id, - new_name=new_name)) - - self._name = new_name - def delete(self): """ Deletes this Ethernet switch. diff --git a/gns3server/modules/dynamips/nodes/frame_relay_switch.py b/gns3server/modules/dynamips/nodes/frame_relay_switch.py index c8e70633..4b4cd64d 100644 --- a/gns3server/modules/dynamips/nodes/frame_relay_switch.py +++ b/gns3server/modules/dynamips/nodes/frame_relay_switch.py @@ -86,6 +86,24 @@ class FrameRelaySwitch(object): return self._name[1:-1] # remove quotes + @name.setter + def name(self, new_name): + """ + Renames this Frame Relay switch. + + :param new_name: New name for this switch + """ + + new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces + self._hypervisor.send("frsw rename {name} {new_name}".format(name=self._name, + new_name=new_name)) + + log.info("Frame Relay switch {name} [id={id}]: renamed to {new_name}".format(name=self._name, + id=self._id, + new_name=new_name)) + + self._name = new_name + @property def hypervisor(self): """ @@ -125,23 +143,6 @@ class FrameRelaySwitch(object): return self._mapping - def rename(self, new_name): - """ - Renames this Frame Relay switch. - - :param new_name: New name for this switch - """ - - new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces - self._hypervisor.send("frsw rename {name} {new_name}".format(name=self._name, - new_name=new_name)) - - log.info("Frame Relay switch {name} [id={id}]: renamed to {new_name}".format(name=self._name, - id=self._id, - new_name=new_name)) - - self._name = new_name - def delete(self): """ Deletes this Frame Relay switch. diff --git a/gns3server/modules/dynamips/nodes/router.py b/gns3server/modules/dynamips/nodes/router.py index e1beaf38..698e6994 100644 --- a/gns3server/modules/dynamips/nodes/router.py +++ b/gns3server/modules/dynamips/nodes/router.py @@ -163,6 +163,24 @@ class Router(object): return self._name[1:-1] # remove quotes + @name.setter + def name(self, new_name): + """ + Renames this router. + + :param new_name: new name string + """ + + new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces + self._hypervisor.send("vm rename {name} {new_name}".format(name=self._name, + new_name=new_name)) + + log.info("router {name} [id={id}]: renamed to {new_name}".format(name=self._name, + id=self._id, + new_name=new_name)) + + self._name = new_name + @property def platform(self): """ @@ -202,23 +220,6 @@ class Router(object): return self._hypervisor.send("vm list_con_ports") - def rename(self, new_name): - """ - Renames this router. - - :param new_name: new name string - """ - - new_name = '"' + new_name + '"' # put the new name into quotes to protect spaces - self._hypervisor.send("vm rename {name} {new_name}".format(name=self._name, - new_name=new_name)) - - log.info("router {name} [id={id}]: renamed to {new_name}".format(name=self._name, - id=self._id, - new_name=new_name)) - - self._name = new_name - def delete(self): """ Deletes this router. diff --git a/tests/dynamips/conftest.py b/tests/dynamips/conftest.py index 9d7f294a..ff4e2225 100644 --- a/tests/dynamips/conftest.py +++ b/tests/dynamips/conftest.py @@ -9,7 +9,7 @@ def hypervisor(request): cwd = os.path.dirname(os.path.abspath(__file__)) dynamips_path = os.path.join(cwd, "dynamips.stable") print("\nStarting Dynamips Hypervisor: {}".format(dynamips_path)) - manager = HypervisorManager(dynamips_path, "/tmp", base_port=9000) + manager = HypervisorManager(dynamips_path, "/tmp", "127.0.0.1", 9000) hypervisor = manager.start_new_hypervisor() def stop(): diff --git a/tests/dynamips/dynamips.stable b/tests/dynamips/dynamips.stable index df7950ca..f7acae8e 100755 Binary files a/tests/dynamips/dynamips.stable and b/tests/dynamips/dynamips.stable differ diff --git a/tests/dynamips/test_atm_bridge.py b/tests/dynamips/test_atm_bridge.py index 8b84fe61..aed46f70 100644 --- a/tests/dynamips/test_atm_bridge.py +++ b/tests/dynamips/test_atm_bridge.py @@ -19,7 +19,7 @@ def test_atm_bridge_exists(atm_bridge): def test_rename_atm_bridge(atm_bridge): - atm_bridge.rename("new ATM bridge") + atm_bridge.name = "new ATM bridge" assert atm_bridge.name == "new ATM bridge" diff --git a/tests/dynamips/test_atm_switch.py b/tests/dynamips/test_atm_switch.py index 8d2f92f6..6617b199 100644 --- a/tests/dynamips/test_atm_switch.py +++ b/tests/dynamips/test_atm_switch.py @@ -19,7 +19,7 @@ def test_atmsw_exists(atmsw): def test_rename_atmsw(atmsw): - atmsw.rename("new ATM switch") + atmsw.name = "new ATM switch" assert atmsw.name == "new ATM switch" diff --git a/tests/dynamips/test_bridge.py b/tests/dynamips/test_bridge.py index 6ab07ee1..ec415dbf 100644 --- a/tests/dynamips/test_bridge.py +++ b/tests/dynamips/test_bridge.py @@ -18,7 +18,7 @@ def test_bridge_exists(bridge): def test_rename_bridge(bridge): - bridge.rename("new bridge") + bridge.name = "new bridge" assert bridge.name == "new bridge" diff --git a/tests/dynamips/test_ethernet_switch.py b/tests/dynamips/test_ethernet_switch.py index 52574ec5..0f435f38 100644 --- a/tests/dynamips/test_ethernet_switch.py +++ b/tests/dynamips/test_ethernet_switch.py @@ -19,7 +19,7 @@ def test_ethsw_exists(ethsw): def test_rename_ethsw(ethsw): - ethsw.rename("new Ethernet switch") + ethsw.name = "new Ethernet switch" assert ethsw.name == "new Ethernet switch" diff --git a/tests/dynamips/test_frame_relay_switch.py b/tests/dynamips/test_frame_relay_switch.py index 79be3d7a..b6dde5eb 100644 --- a/tests/dynamips/test_frame_relay_switch.py +++ b/tests/dynamips/test_frame_relay_switch.py @@ -19,7 +19,7 @@ def test_frsw_exists(frsw): def test_rename_frsw(frsw): - frsw.rename("new Frame Relay switch") + frsw.name = "new Frame Relay switch" assert frsw.name == "new Frame Relay switch" diff --git a/tests/dynamips/test_hypervisor_manager.py b/tests/dynamips/test_hypervisor_manager.py index 658cb9b9..f670641c 100644 --- a/tests/dynamips/test_hypervisor_manager.py +++ b/tests/dynamips/test_hypervisor_manager.py @@ -11,6 +11,7 @@ def hypervisor_manager(request): dynamips_path = os.path.join(cwd, "dynamips.stable") print("\nStarting Dynamips Hypervisor: {}".format(dynamips_path)) manager = HypervisorManager(dynamips_path, "/tmp", "127.0.0.1", 9000) + #manager.start_new_hypervisor() def stop(): @@ -23,6 +24,7 @@ def hypervisor_manager(request): def test_allocate_hypervisor_for_router(hypervisor_manager): + hypervisor_manager.allocate_hypervisor_per_device = False # default of 1GB of RAM per hypervisor instance assert hypervisor_manager.memory_usage_limit_per_hypervisor == 1024 hypervisor = hypervisor_manager.allocate_hypervisor_for_router("c3725.image", 512) diff --git a/tests/dynamips/test_router.py b/tests/dynamips/test_router.py index 7540caac..aba6a377 100644 --- a/tests/dynamips/test_router.py +++ b/tests/dynamips/test_router.py @@ -30,14 +30,13 @@ def test_create_and_delete_router(hypervisor): router.get_status() -# def test_rename_router(router): -# -# assert router.name == "router" -# router.rename("my_router") -# assert router.name == "my_router" -# router.rename("router") -# assert router.name == "router" - #router.delete() # FIXME: fails with current Dynamips version +def test_rename_router(hypervisor): + + router = Router(hypervisor, "my router to rename") + assert router.name == "my router to rename" + router.name = "my_router" + assert router.name == "my_router" + router.delete() def test_image(router):