1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-24 17:28:08 +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()
return cls._instance
def __del__(self):
self.destroy()
def destroy():
"""Cleanup the VMS. Call this before closing the server"""
cls._instance()
@property
def module_name(self):
"""

View File

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

View File

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

View File

@ -77,7 +77,10 @@ class Server:
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()
def _signal_handling(self):
@ -152,8 +155,4 @@ class Server:
# FIXME: remove it in production or in tests
self._loop.call_later(1, self._reload_hook)
try:
self._loop.run_forever()
except KeyboardInterrupt:
log.info("\nExiting...")
self._cleanup()
self._loop.run_forever()