This patch fixes just the Python 3 problems found by running python3 setup.py install
There are still many other issues to be fixed, but this is a start. Signed-off-by: Terry Wilson <twil...@redhat.com> --- python/ovs/daemon.py | 31 ++++++++++++++++--------------- python/ovs/db/idl.py | 10 +++++----- python/ovs/fatal_signal.py | 2 +- python/ovs/json.py | 2 +- python/ovs/ovsuuid.py | 2 +- python/ovs/poller.py | 2 +- python/ovs/socket_util.py | 38 +++++++++++++++++++------------------- python/ovs/stream.py | 12 +++++++----- python/setup.py | 2 +- 9 files changed, 52 insertions(+), 49 deletions(-) diff --git a/python/ovs/daemon.py b/python/ovs/daemon.py index 4a704c3..1e84dd2 100644 --- a/python/ovs/daemon.py +++ b/python/ovs/daemon.py @@ -133,30 +133,30 @@ def _make_pidfile(): global file_handle file_handle = open(tmpfile, "w") - except IOError, e: + except IOError as e: _fatal("%s: create failed (%s)" % (tmpfile, e.strerror)) try: s = os.fstat(file_handle.fileno()) - except IOError, e: + except IOError as e: _fatal("%s: fstat failed (%s)" % (tmpfile, e.strerror)) try: file_handle.write("%s\n" % pid) file_handle.flush() - except OSError, e: + except OSError as e: _fatal("%s: write failed: %s" % (tmpfile, e.strerror)) try: fcntl.lockf(file_handle, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError, e: + except IOError as e: _fatal("%s: fcntl failed: %s" % (tmpfile, e.strerror)) # Rename or link it to the correct name. if _overwrite_pidfile: try: os.rename(tmpfile, _pidfile) - except OSError, e: + except OSError as e: _fatal("failed to rename \"%s\" to \"%s\" (%s)" % (tmpfile, _pidfile, e.strerror)) else: @@ -164,7 +164,7 @@ def _make_pidfile(): try: os.link(tmpfile, _pidfile) error = 0 - except OSError, e: + except OSError as e: error = e.errno if error == errno.EEXIST: _check_already_running() @@ -200,7 +200,7 @@ def _waitpid(pid, options): while True: try: return os.waitpid(pid, options) - except OSError, e: + except OSError as e: if e.errno == errno.EINTR: pass return -e.errno, 0 @@ -209,13 +209,13 @@ def _waitpid(pid, options): def _fork_and_wait_for_startup(): try: rfd, wfd = os.pipe() - except OSError, e: + except OSError as e: sys.stderr.write("pipe failed: %s\n" % os.strerror(e.errno)) sys.exit(1) try: pid = os.fork() - except OSError, e: + except OSError as e: sys.stderr.write("could not fork: %s\n" % os.strerror(e.errno)) sys.exit(1) @@ -227,7 +227,7 @@ def _fork_and_wait_for_startup(): try: s = os.read(rfd, 1) error = 0 - except OSError, e: + except OSError as e: s = "" error = e.errno if error != errno.EINTR: @@ -315,7 +315,8 @@ def _monitor_daemon(daemon_pid): wakeup = last_restart + 10000 if now > wakeup: break - print "sleep %f" % ((wakeup - now) / 1000.0) + sys.stdout.write("sleep %f\n" % ( + (wakeup - now) / 1000.0)) time.sleep((wakeup - now) / 1000.0) last_restart = ovs.timeval.msec() @@ -406,7 +407,7 @@ def __read_pidfile(pidfile, delete_if_stale): try: file_handle = open(pidfile, "r+") - except IOError, e: + except IOError as e: if e.errno == errno.ENOENT and delete_if_stale: return 0 vlog.warn("%s: open: %s" % (pidfile, e.strerror)) @@ -439,7 +440,7 @@ def __read_pidfile(pidfile, delete_if_stale): # We won the right to delete the stale pidfile. try: os.unlink(pidfile) - except IOError, e: + except IOError as e: vlog.warn("%s: failed to delete stale pidfile (%s)" % (pidfile, e.strerror)) return -e.errno @@ -447,7 +448,7 @@ def __read_pidfile(pidfile, delete_if_stale): vlog.dbg("%s: deleted stale pidfile" % pidfile) file_handle.close() return 0 - except IOError, e: + except IOError as e: if e.errno not in [errno.EACCES, errno.EAGAIN]: vlog.warn("%s: fcntl: %s" % (pidfile, e.strerror)) return -e.errno @@ -456,7 +457,7 @@ def __read_pidfile(pidfile, delete_if_stale): try: try: error = int(file_handle.readline()) - except IOError, e: + except IOError as e: vlog.warn("%s: read: %s" % (pidfile, e.strerror)) error = -e.errno except ValueError: diff --git a/python/ovs/db/idl.py b/python/ovs/db/idl.py index f074dbf..4ebc452 100644 --- a/python/ovs/db/idl.py +++ b/python/ovs/db/idl.py @@ -190,7 +190,7 @@ class Idl(object): self._monitor_request_id = None self.__clear() self.__parse_update(msg.result) - except error.Error, e: + except error.Error as e: vlog.err("%s: parse error in received schema: %s" % (self._session.get_name(), e)) self.__error() @@ -347,7 +347,7 @@ class Idl(object): def __parse_update(self, update): try: self.__do_parse_update(update) - except error.Error, e: + except error.Error as e: vlog.err("%s: error parsing update: %s" % (self._session.get_name(), e)) @@ -444,7 +444,7 @@ class Idl(object): try: datum = ovs.db.data.Datum.from_json(column.type, datum_json) - except error.Error, e: + except error.Error as e: # XXX rate-limit vlog.warn("error parsing column %s in table %s: %s" % (column_name, table.name, e)) @@ -583,7 +583,7 @@ class Row(object): try: datum = ovs.db.data.Datum.from_python(column.type, value, _row_to_uuid) - except error.Error, e: + except error.Error as e: # XXX rate-limit vlog.err("attempting to write bad value to column %s (%s)" % (column_name, e)) @@ -602,7 +602,7 @@ class Row(object): continue try: datum = ovs.db.data.Datum.from_json(column.type, datum_json) - except error.Error, e: + except error.Error as e: # XXX rate-limit vlog.warn("error parsing column %s in table %s: %s" % (column_name, table.name, e)) diff --git a/python/ovs/fatal_signal.py b/python/ovs/fatal_signal.py index e6fe783..7308039 100644 --- a/python/ovs/fatal_signal.py +++ b/python/ovs/fatal_signal.py @@ -90,7 +90,7 @@ def _unlink(file_): try: os.unlink(file_) return 0 - except OSError, e: + except OSError as e: return e.errno diff --git a/python/ovs/json.py b/python/ovs/json.py index d329ee4..bfa9f5a 100644 --- a/python/ovs/json.py +++ b/python/ovs/json.py @@ -143,7 +143,7 @@ def from_file(name): def from_string(s): try: s = unicode(s, 'utf-8') - except UnicodeDecodeError, e: + except UnicodeDecodeError as e: seq = ' '.join(["0x%2x" % ord(c) for c in e.object[e.start:e.end] if ord(c) >= 0x80]) return ("not a valid UTF-8 string: invalid UTF-8 sequence %s" % seq) diff --git a/python/ovs/ovsuuid.py b/python/ovs/ovsuuid.py index 56fdad0..5cc0e1d 100644 --- a/python/ovs/ovsuuid.py +++ b/python/ovs/ovsuuid.py @@ -42,7 +42,7 @@ def from_json(json, symtab=None): if not uuidRE.match(s): raise error.Error("\"%s\" is not a valid UUID" % s, json) return uuid.UUID(s) - except error.Error, e: + except error.Error as e: if not symtab: raise e try: diff --git a/python/ovs/poller.py b/python/ovs/poller.py index b67cfc5..d07033b 100644 --- a/python/ovs/poller.py +++ b/python/ovs/poller.py @@ -167,7 +167,7 @@ class Poller(object): try: events = self.poll.poll(self.timeout) self.__log_wakeup(events) - except select.error, e: + except select.error as e: # XXX rate-limit error, msg = e if error != errno.EINTR: diff --git a/python/ovs/socket_util.py b/python/ovs/socket_util.py index f657d11..3bd4750 100644 --- a/python/ovs/socket_util.py +++ b/python/ovs/socket_util.py @@ -40,7 +40,7 @@ def make_short_name(long_name): os.symlink(long_dirname, link_name) ovs.fatal_signal.add_file_to_unlink(link_name) return os.path.join(link_name, os.path.basename(long_name)) - except OSError, e: + except OSError as e: if e.errno != errno.EEXIST: break raise Exception("Failed to create temporary symlink") @@ -65,7 +65,7 @@ def make_unix_socket(style, nonblock, bind_path, connect_path, short=False): try: sock = socket.socket(socket.AF_UNIX, style) - except socket.error, e: + except socket.error as e: return get_exception_errno(e), None try: @@ -75,7 +75,7 @@ def make_unix_socket(style, nonblock, bind_path, connect_path, short=False): # Delete bind_path but ignore ENOENT. try: os.unlink(bind_path) - except OSError, e: + except OSError as e: if e.errno != errno.ENOENT: return e.errno, None @@ -84,19 +84,19 @@ def make_unix_socket(style, nonblock, bind_path, connect_path, short=False): try: if sys.hexversion >= 0x02060000: - os.fchmod(sock.fileno(), 0700) + os.fchmod(sock.fileno(), 0o700) else: - os.chmod("/dev/fd/%d" % sock.fileno(), 0700) - except OSError, e: + os.chmod("/dev/fd/%d" % sock.fileno(), 0o700) + except OSError as e: pass if connect_path is not None: try: sock.connect(connect_path) - except socket.error, e: + except socket.error as e: if get_exception_errno(e) != errno.EINPROGRESS: raise return 0, sock - except socket.error, e: + except socket.error as e: sock.close() if (bind_path is not None and os.path.exists(bind_path)): @@ -114,7 +114,7 @@ def make_unix_socket(style, nonblock, bind_path, connect_path, short=False): basename = os.path.basename(connect_path) try: connect_dirfd = os.open(dirname, os.O_DIRECTORY | os.O_RDONLY) - except OSError, err: + except OSError as err: return get_exception_errno(err), None short_connect_path = "/proc/self/fd/%d/%s" % (connect_dirfd, basename) @@ -123,7 +123,7 @@ def make_unix_socket(style, nonblock, bind_path, connect_path, short=False): basename = os.path.basename(bind_path) try: bind_dirfd = os.open(dirname, os.O_DIRECTORY | os.O_RDONLY) - except OSError, err: + except OSError as err: return get_exception_errno(err), None short_bind_path = "/proc/self/fd/%d/%s" % (bind_dirfd, basename) @@ -169,7 +169,7 @@ def check_connection_completion(sock): # XXX rate-limit vlog.err("poll return POLLERR but send succeeded") return errno.EPROTO - except socket.error, e: + except socket.error as e: return get_exception_errno(e) else: return 0 @@ -217,7 +217,7 @@ def inet_open_active(style, target, default_port, dscp): else: sock = socket.socket(socket.AF_INET6, style, 0) family = socket.AF_INET6 - except socket.error, e: + except socket.error as e: return get_exception_errno(e), None try: @@ -225,11 +225,11 @@ def inet_open_active(style, target, default_port, dscp): set_dscp(sock, family, dscp) try: sock.connect(address) - except socket.error, e: + except socket.error as e: if get_exception_errno(e) != errno.EINPROGRESS: raise return 0, sock - except socket.error, e: + except socket.error as e: sock.close() return get_exception_errno(e), None @@ -256,7 +256,7 @@ def get_null_fd(): if null_fd < 0: try: null_fd = os.open("/dev/null", os.O_RDWR) - except OSError, e: + except OSError as e: vlog.err("could not open /dev/null: %s" % os.strerror(e.errno)) return -e.errno return null_fd @@ -282,14 +282,14 @@ def write_fully(fd, buf): else: bytes_written += retval buf = buf[:retval] - except OSError, e: + except OSError as e: return e.errno, bytes_written def set_nonblocking(sock): try: sock.setblocking(0) - except socket.error, e: + except socket.error as e: vlog.err("could not set nonblocking mode on socket: %s" % os.strerror(get_exception_errno(e))) @@ -302,12 +302,12 @@ def set_dscp(sock, family, dscp): if family == socket.AF_INET: try: sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, val) - except socket.error, e: + except socket.error as e: raise elif family == socket.AF_INET6: try: sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_TCLASS, val) - except socket.error, e: + except socket.error as e: raise else: raise diff --git a/python/ovs/stream.py b/python/ovs/stream.py index fb083ee..1af9253 100644 --- a/python/ovs/stream.py +++ b/python/ovs/stream.py @@ -121,7 +121,7 @@ class Stream(object): raise NotImplementedError("This method must be overrided by subclass") @staticmethod - def open_block((error, stream)): + def open_block(error_stream): """Blocks until a Stream completes its connection attempt, either succeeding or failing. (error, stream) should be the tuple returned by Stream.open(). Returns a tuple of the same form. @@ -129,6 +129,8 @@ class Stream(object): Typical usage: error, stream = Stream.open_block(Stream.open("unix:/tmp/socket"))""" + # Py3 doesn't support tuple parameter unpacking - PEP 3113 + error, stream = error_stream if not error: while True: error = stream.connect() @@ -198,7 +200,7 @@ class Stream(object): try: return (0, self.socket.recv(n)) - except socket.error, e: + except socket.error as e: return (ovs.socket_util.get_exception_errno(e), "") def send(self, buf): @@ -220,7 +222,7 @@ class Stream(object): try: return self.socket.send(buf) - except socket.error, e: + except socket.error as e: return -ovs.socket_util.get_exception_errno(e) def run(self): @@ -293,7 +295,7 @@ class PassiveStream(object): try: sock.listen(10) - except socket.error, e: + except socket.error as e: vlog.err("%s: listen: %s" % (name, os.strerror(e.error))) sock.close() return e.error, None @@ -321,7 +323,7 @@ class PassiveStream(object): sock, addr = self.socket.accept() ovs.socket_util.set_nonblocking(sock) return 0, Stream(sock, "unix:%s" % addr, 0) - except socket.error, e: + except socket.error as e: error = ovs.socket_util.get_exception_errno(e) if error != errno.EAGAIN: # XXX rate-limit diff --git a/python/setup.py b/python/setup.py index 889d215..62507ad 100644 --- a/python/setup.py +++ b/python/setup.py @@ -19,7 +19,7 @@ VERSION = "unknown" try: # Try to set the version from the generated ovs/version.py - execfile("ovs/version.py") + exec(open("ovs/version.py").read()) except IOError: print("Ensure version.py is created by running make python/ovs/version.py", file=sys.stderr) -- 2.1.0 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev