mirror of
https://github.com/GNS3/gns3-server
synced 2024-11-28 03:08:14 +00:00
Builtin destination to shutdown the server.
This commit is contained in:
parent
ab02925f98
commit
a92da02973
@ -140,6 +140,11 @@ class JSONRPCWebSocket(tornado.websocket.WebSocketHandler):
|
||||
# This is a notification, silently ignore this error...
|
||||
return
|
||||
|
||||
if method.startswith("builtin"):
|
||||
log.info("calling built-in method {}".format(method))
|
||||
self.destinations[method]()
|
||||
return
|
||||
|
||||
module = self.destinations[method]
|
||||
# ZMQ requests are encoded in JSON
|
||||
# format is a JSON array: [session ID, JSON-RPC request]
|
||||
|
@ -113,6 +113,8 @@ class IModule(multiprocessing.Process):
|
||||
signals = [signal.SIGTERM, signal.SIGINT]
|
||||
if not sys.platform.startswith("win"):
|
||||
signals.extend([signal.SIGHUP, signal.SIGQUIT])
|
||||
else:
|
||||
signals.extend([signal.SIGBREAK])
|
||||
for sig in signals:
|
||||
signal.signal(sig, signal_handler)
|
||||
|
||||
|
@ -127,6 +127,8 @@ class Dynamips(IModule):
|
||||
Properly stops the module.
|
||||
"""
|
||||
|
||||
#if not sys.platform.startswith("win32"):
|
||||
# self._callback.stop()
|
||||
if self._hypervisor_manager:
|
||||
self._hypervisor_manager.stop_all_hypervisors()
|
||||
IModule.stop(self) # this will stop the I/O loop
|
||||
|
@ -95,6 +95,7 @@ class IOU(IModule):
|
||||
Properly stops the module.
|
||||
"""
|
||||
|
||||
#self._iou_callback.stop()
|
||||
# delete all IOU instances
|
||||
for iou_id in self._iou_instances:
|
||||
iou_instance = self._iou_instances[iou_id]
|
||||
|
@ -107,6 +107,9 @@ class Server(object):
|
||||
# instance.start() # starts the new process
|
||||
#=======================================================================
|
||||
|
||||
# special built-in destination to stop the server
|
||||
JSONRPCWebSocket.register_destination("builtin.stop", self._cleanup)
|
||||
|
||||
for module in MODULES:
|
||||
instance = module(module.__name__.lower(),
|
||||
"127.0.0.1", # ZeroMQ server address
|
||||
@ -151,6 +154,8 @@ class Server(object):
|
||||
signals = [signal.SIGTERM, signal.SIGINT]
|
||||
if not sys.platform.startswith("win"):
|
||||
signals.extend([signal.SIGHUP, signal.SIGQUIT])
|
||||
else:
|
||||
signals.extend([signal.SIGBREAK])
|
||||
for sig in signals:
|
||||
signal.signal(sig, signal_handler)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user