1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 19:28:07 +00:00

Cleanup VMS when leaving

This commit is contained in:
Julien Duponchelle 2015-01-22 11:49:22 +01:00
parent e12e6044dc
commit 08b2dc6369
4 changed files with 21 additions and 10 deletions

View File

@ -49,6 +49,13 @@ class BaseManager:
cls._instance = cls() cls._instance = cls()
return cls._instance return cls._instance
def __del__(self):
self.destroy()
def destroy():
"""Cleanup the VMS. Call this before closing the server"""
cls._instance()
@property @property
def module_name(self): def module_name(self):
""" """

View File

@ -32,7 +32,8 @@ class BaseVM:
name=self.name, name=self.name,
uuid=self.uuid)) uuid=self.uuid))
# TODO: When delete release console ports def __del__(self):
self.destroy()
@property @property
def project(self): def project(self):
@ -118,3 +119,10 @@ class BaseVM:
""" """
raise NotImplementedError raise NotImplementedError
def destroy(self):
"""
Destroy the VM process.
"""
raise NotImplementedError

View File

@ -81,9 +81,6 @@ class VPCSVM(BaseVM):
else: else:
self._console = self._manager.port_manager.get_free_console_port() self._console = self._manager.port_manager.get_free_console_port()
def __del__(self):
self.destroy()
def destroy(self): def destroy(self):
self._kill_process() self._kill_process()
if self._console: if self._console:

View File

@ -77,7 +77,10 @@ class Server:
Cleanup the modules (shutdown running emulators etc.) Cleanup the modules (shutdown running emulators etc.)
""" """
# TODO: clean everything from here for module in MODULES:
log.debug("Unloading module {}".format(module.__name__))
m = module.instance()
m.destroy()
self._loop.stop() self._loop.stop()
def _signal_handling(self): def _signal_handling(self):
@ -152,8 +155,4 @@ class Server:
# FIXME: remove it in production or in tests # FIXME: remove it in production or in tests
self._loop.call_later(1, self._reload_hook) self._loop.call_later(1, self._reload_hook)
try: self._loop.run_forever()
self._loop.run_forever()
except KeyboardInterrupt:
log.info("\nExiting...")
self._cleanup()