mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-28 11:18:11 +00:00
Cleanup VMS when leaving
This commit is contained in:
parent
e12e6044dc
commit
08b2dc6369
@ -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):
|
||||||
"""
|
"""
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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()
|
|
||||||
|
Loading…
Reference in New Issue
Block a user