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