From 27379682dfbb5011b1941eecb771776d5bdbdddd Mon Sep 17 00:00:00 2001 From: grossmj Date: Sun, 6 Apr 2014 11:37:34 -0600 Subject: [PATCH] Rename socket.error to OSError. Server shutdown management. --- gns3server/main.py | 8 ++------ gns3server/modules/dynamips/dynamips_hypervisor.py | 8 ++++---- gns3server/modules/dynamips/hypervisor_manager.py | 2 +- gns3server/modules/iou/iou_device.py | 2 +- gns3server/server.py | 10 +++++----- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/gns3server/main.py b/gns3server/main.py index 55dca9c3..9a11139b 100644 --- a/gns3server/main.py +++ b/gns3server/main.py @@ -20,10 +20,9 @@ import os import datetime import sys import multiprocessing -import logging import tornado.options -from .server import Server -from .version import __version__ +from gns3server.server import Server +from gns3server.version import __version__ # command line options from tornado.options import define @@ -60,9 +59,6 @@ def main(): tornado.options.print_help() raise SystemExit - # FIXME: log everything for now (excepting DEBUG) - logging.basicConfig(level=logging.INFO) - from tornado.options import options server = Server(options.host, options.port, diff --git a/gns3server/modules/dynamips/dynamips_hypervisor.py b/gns3server/modules/dynamips/dynamips_hypervisor.py index 0b746cc6..0adfdac6 100644 --- a/gns3server/modules/dynamips/dynamips_hypervisor.py +++ b/gns3server/modules/dynamips/dynamips_hypervisor.py @@ -71,7 +71,7 @@ class DynamipsHypervisor(object): self._socket = socket.create_connection((self._host, self._port), self._timeout) - except socket.error as e: + except OSError as e: raise DynamipsError("Could not connect to server: {}".format(e)) try: @@ -362,7 +362,7 @@ class DynamipsHypervisor(object): with socket.socket(socket.AF_INET, socket_type) as s: s.bind((host, port)) # the port is available if bind is a success return port - except socket.error as e: + except OSError as e: if e.errno == errno.EADDRINUSE: # socket already in use continue else: @@ -428,7 +428,7 @@ class DynamipsHypervisor(object): command = command.strip() + '\n' log.debug("sending {}".format(command)) self.socket.sendall(command.encode('utf-8')) - except socket.error as e: + except OSError as e: raise DynamipsError("Lost communication with {host}:{port} :{error}" .format(host=self._host, port=self._port, error=e)) @@ -439,7 +439,7 @@ class DynamipsHypervisor(object): try: chunk = self.socket.recv(1024) # match to Dynamips' buffer size buf += chunk.decode("utf-8") - except socket.error as e: + except OSError as e: raise DynamipsError("Communication timed out with {host}:{port} :{error}" .format(host=self._host, port=self._port, error=e)) diff --git a/gns3server/modules/dynamips/hypervisor_manager.py b/gns3server/modules/dynamips/hypervisor_manager.py index d1d3d190..f608ff37 100644 --- a/gns3server/modules/dynamips/hypervisor_manager.py +++ b/gns3server/modules/dynamips/hypervisor_manager.py @@ -412,7 +412,7 @@ class HypervisorManager(object): try: with socket.create_connection((host, port), timeout): pass - except socket.error as e: + except OSError as e: last_exception = e continue connection_success = True diff --git a/gns3server/modules/iou/iou_device.py b/gns3server/modules/iou/iou_device.py index 41058901..ccd9e331 100644 --- a/gns3server/modules/iou/iou_device.py +++ b/gns3server/modules/iou/iou_device.py @@ -798,7 +798,7 @@ class IOUDevice(object): with socket.socket(socket.AF_INET, socket_type) as s: s.bind((host, port)) # the port is available if bind is a success return port - except socket.error as e: + except OSError as e: if e.errno == errno.EADDRINUSE: # socket already in use continue else: diff --git a/gns3server/server.py b/gns3server/server.py index 1770267b..0b1fc239 100644 --- a/gns3server/server.py +++ b/gns3server/server.py @@ -61,7 +61,7 @@ class Server(object): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.bind(('127.0.0.1', 0)) self._zmq_port = sock.getsockname()[1] - except socket.error as e: + except OSError as e: log.warn("could not pick up a random port for the ZeroMQ server: {}".format(e)) self._zmq_port = port + 1 # let's try this server port + 1 self._ipc = ipc @@ -137,10 +137,10 @@ class Server(object): try: print("Starting server on {}:{}".format(self._host, self._port)) tornado_app.listen(self._port, address=self._host) - except socket.error as e: + except OSError as e: if e.errno == errno.EADDRINUSE: # socket already in use - logging.critical("socket in use for port {}".format(self._port)) - raise SystemExit + logging.critical("socket in use for {}:{}".format(self._host, self._port)) + self._cleanup() ioloop = tornado.ioloop.IOLoop.instance() stream = zmqstream.ZMQStream(router, ioloop) @@ -212,7 +212,7 @@ class Server(object): # terminate all modules for module in self._modules: - module.join(timeout=1) + #module.join(timeout=1) if module.is_alive(): log.info("terminating {}".format(module.name)) module.terminate()