[ovs-dev] [PATCH 02/55] python: Start fixing some Python 3 issues.
Russell Bryant
russell at ovn.org
Mon Dec 21 20:47:02 UTC 2015
From: Terry Wilson <twilson at redhat.com>
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 <twilson at redhat.com>
Signed-off-by: Russell Bryant <russell at ovn.org>
---
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 c8990c7..5e3466e 100644
--- a/python/ovs/db/idl.py
+++ b/python/ovs/db/idl.py
@@ -191,7 +191,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()
@@ -354,7 +354,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))
@@ -451,7 +451,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))
@@ -599,7 +599,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))
@@ -618,7 +618,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.5.0
More information about the dev
mailing list